2017-05-17 1 views
0

외부 클래스 함수에 액세스 할 수 없어서 파이썬에서 다른 클래스 메소드에 액세스 할 수있는 방법에 대한 조언이나 해결책을 얻는 것이 좋습니다.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

죄송합니다. 제 실수를 이해했습니다. 회신 해 주셔서 감사합니다. 나는 더 깊이 들어갈거야. –

관련 문제