pyqt5で別のクラスの関数を実行するのがうまくいかない
タブが3つに分かれたGUIを作った際、タブ内の関数を実行したときにウィンドウのタイトルが変化するようにしたいです。以下は試しに書いたコードです。
import sys
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtWidgets import QHBoxLayout, QTabWidget
from PyQt5.QtWidgets import QRadioButton, QButtonGroup
from PyQt5.QtWidgets import QCheckBox, QLabel, QComboBox
from PyQt5.QtWidgets import QPushButton, QVBoxLayout
class Widget1(QWidget):
def __init__(self, parent=None):
super(QWidget, self).__init__(parent)
button = QPushButton('1')
button.clicked.connect(self.buttonClicked)
layout = QVBoxLayout()
layout.addWidget(button)
self.setLayout(layout)
def buttonClicked(self):
print("1")
Main.set_WindowTitle(self)
class Widget2(QWidget):
def __init__(self, parent=None):
super(QWidget, self).__init__(parent)
button = QPushButton('2')
button.clicked.connect(self.buttonClicked)
layout = QVBoxLayout()
layout.addWidget(button)
self.setLayout(layout)
def buttonClicked(self):
print("2")
class Widget3(QWidget):
def __init__(self, parent=None):
super(Widget3, self).__init__(parent)
button = QPushButton('3')
button.clicked.connect(self.buttonClicked)
layout = QVBoxLayout()
layout.addWidget(button)
self.setLayout(layout)
def buttonClicked(self):
print("3")
class Main(QWidget):
def __init__(self):
super().__init__()
widget1 = Widget1(self)
widget2 = Widget2(self)
widget3 = Widget3(self)
tab = QTabWidget()
tab.addTab(widget1, '1')
tab.addTab(widget2, '2')
tab.addTab(widget3, '3')
layout = QHBoxLayout(self)
layout.addWidget(tab)
self.setLayout(layout)
self.setWindowTitle('tab')
self.show()
def set_WindowTitle(self):
self.setWindowTitle('1')
def set_WindowTitle2(self):
self.setWindowTitle('2')
def set_WindowTitle3(self):
self.setWindowTitle('3')
if __name__ == '__main__':
app = QApplication(sys.argv)
win = Main()
sys.exit(app.exec_())
これを実行することで次のようなGUIが作成されます。
ここで、一つ目のタブのボタン1を押したときにウィンドウ全体のタイトルが「tab」から「1」になるように書いてみたつもりなのですが、実際にはボタンを押しても何も変化しません。エラーすら吐きません。どのように変えればよいのでしょうか。