2017-05-17 19 views
0

外部クラス関数へのアクセスにつきまとわれましたが、Pythonの別のクラスメソッドにアクセスするには、いくつかのアドバイスや解決策があります。PyQt5別のクラス関数へのアクセスが滞っています

from PyQt5 import QtCore, QtGui, QtWidgets 

class Ui_MainWindow(object): 

    def setupUi(self, MainWindow): 

     MainWindow.setObjectName("MainWindow") 
     MainWindow.resize(480, 640) 
     self.centralwidget = QtWidgets.QWidget(MainWindow) 
     self.centralwidget.setObjectName("centralwidget") 

     self.pushButton = QtWidgets.QPushButton(self.centralwidget) 
     self.pushButton.setGeometry(QtCore.QRect(320, 520, 114, 32)) 
     self.pushButton.setObjectName("pushButton") 
     #self.pushButton.clicked.connect(self.btnCheck) 

     self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget) 
     self.pushButton_2.setGeometry(QtCore.QRect(190, 520, 114, 32)) 
     self.pushButton_2.setObjectName("pushButton_2") 

     self.label = QtWidgets.QLabel(self.centralwidget) 
     self.label.setGeometry(QtCore.QRect(40, 150, 411, 311)) 
     font = QtGui.QFont() 
     font.setPointSize(66) 
     self.label.setFont(font) 
     self.label.setAlignment(QtCore.Qt.AlignCenter) 
     self.label.setObjectName("label") 

     MainWindow.setCentralWidget(self.centralwidget) 
     self.statusbar = QtWidgets.QStatusBar(MainWindow) 
     self.statusbar.setObjectName("statusbar") 
     MainWindow.setStatusBar(self.statusbar) 

     self.retranslateUi(MainWindow) 
     QtCore.QMetaObject.connectSlotsByName(MainWindow) 

    def retranslateUi(self, MainWindow): 
     _translate = QtCore.QCoreApplication.translate 
     MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) 
     self.pushButton.setText(_translate("MainWindow", "PushButton1")) 
     self.pushButton_2.setText(_translate("MainWindow", "PushButton2")) 
     self.label.setText(_translate("MainWindow", "TextLabel")) 

class Ui_Support(object): 

    def __init__(self): 
     self.ui = Ui_MainWindow() 
     self.ui.setupUi(self) 

    def btnCheck(self): 
     self.ui.label.setText(a) 

    def closeBtn(self): 
     QtCore.QCoreApplication.instance().quit() 

if __name__ == "__main__": 
    import sys 
    app = QtWidgets.QApplication(sys.argv) 
    MainWindow = QtWidgets.QMainWindow() 
    ui = Ui_MainWindow() 
    ui.setupUi(MainWindow) 
    MainWindow.show() 
    sys.exit(app.exec_()) 

これは私のテスト形式で、私は別のクラスからのボタンイベントを呼び出すしたいと思い、それは内部クラス関数からそれを呼び出すのは簡単だが、それは別のクラスに複数の機能を含んでいた方が良いです、ありがとうございました応答!

答えて

1

QMainWindowのオブジェクトが必要な場合は、Ui_SupportがQMainWindowから継承する必要があります。

class Ui_Support(QtWidgets.QMainWindow): 

    def __init__(self): 
     QtWidgets.QMainWindow.__init__(self, parent=None) 
     self.ui = Ui_MainWindow() 
     self.ui.setupUi(self) 
     self.ui.pushButton.clicked.connect(self.btnCheck) 

    def btnCheck(self): 
     self.ui.label.setText("a") 

    def closeBtn(self): 
     QtCore.QCoreApplication.instance().quit() 


if __name__ == "__main__": 
    import sys 
    app = QtWidgets.QApplication(sys.argv) 
    MainWindow = Ui_Support() 
    MainWindow.show() 
    sys.exit(app.exec_()) 
+0

MainWindowクラスはどこですか? – eyllanesc

+0

申し訳ありませんが、私の間違いを理解して、あなたの返信に感謝します。私はそれでもっと深くなるでしょう。 –

関連する問題