前提・実現したいこと
PyQt5を使って、複数(2つ)のメニュー画面を切り替えるようなプログラムを開発しています。 ある一方のメニュー画面上の処理の結果により、もう一方のメニュー画面の表示内容(Label(QLabel)のText内容(setText))を変えたい時の方法が分かりません。
より具体的には、下記ソースコードで、一方のメニュー画面であるWelcomeMenu中で、button2が押されたら、関数hello()に飛び、その関数の中で、もう一方(別のClass)のメニュー画面StartMenu中の関数であるshowlabel()中で定義しているlabel1の内容を変えたいのです。 このようなクラスをまたがるようなことを行いたい場合、どのようにすればご教示頂ければありがたいです。よろしくお願いします。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
python
1 2import sys 3from PyQt5.QtCore import QCoreApplication 4from PyQt5.QtWidgets import QApplication, QPushButton, QWidget, QTabWidget, QLabel 5 6class StartMenu(QWidget): 7 def __init__(self, parent): 8 super().__init__(parent) 9 self.master = parent 10 11 self.showlabel("Just Started") 12 13 self.button1 = QPushButton('Welcome', self) 14 self.button1.move(230, 120) 15 self.button1.clicked.connect(self.welcome) 16 17 self.quitbutton1 = QPushButton('exit', self) 18 self.quitbutton1.move (230, 200) 19 self.quitbutton1.clicked.connect(QCoreApplication.instance().quit) 20 21 def showlabel(self, text): 22 message = text 23 label1 = QLabel(self) 24 label1.setText(message) 25 label1.move(230,50) 26 label1.show() 27 28 def welcome(self): 29 self.master.setCurrentIndex(1) 30 31 32class WelcomeMenu(QWidget): 33 34 def __init__(self, parent): 35 super().__init__(parent) 36 self.master = parent 37 38 39 self.button2 = QPushButton('Hello', self) 40 self.button2.move(230, 120) 41 self.button2.clicked.connect(self.hello) 42 43 self.quitbutton2 = QPushButton('quit', self) 44 self.quitbutton2.move(230, 200) 45 self.quitbutton2.clicked.connect(self.quit) 46 47 def hello(self): 48 ap = StartMenu(self) #この部分をどのような記述にすべきなのでしょうか? 49 ap.showlabel("Hello!!!") #この部分をどのような記述にすべきなのでしょうか? 50 self.master.setCurrentIndex(0) 51 52 def quit(self): 53 self.master.piyo_piyo("piyo_piyo") 54 self.master.setCurrentIndex(0) 55 56 57class App(QTabWidget): 58 def __init__(self): 59 super().__init__() 60 self.setWindowTitle("Hello") 61 62 self.tab1 = StartMenu(self) 63 self.tab2 = WelcomeMenu(self) 64 65 66 self.addTab(self.tab1, "StartMenu") 67 self.addTab(self.tab2, "WelcomeMenu") 68 69 self.setStyleSheet("QTabWidget::pane { border: 0; }") 70 #self.tabBar().hide() 71 self.resize(500, 300) 72 self.move(100, 0) 73 74 def piyo_piyo(self, text): 75 print(text) 76 77 78def main(): 79 app = QApplication(sys.argv) 80 ex1 = App() 81 ex1.show() 82 sys.exit(app.exec_()) 83 84 85if __name__ == '__main__': 86 main() 87
試したこと
関数hello()中に、「#この部分をどのような記述にすべきなのでしょうか?」の行のコマンドを書いたのですが、効果はありませんでした。 クラスの根本的な事を私は理解していないと思っています。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/16 06:25