Pyqt5从子类访问GUI元素

时间:2016-08-30 12:52:57

标签: python subclass pyqt5

需要帮助从子类读取和写入GUI元素。 代码:

ng-repeat

问题是UI element: [] doABC # main.py import mySubclass class myAppController(QtWidgets.QMainWindow): def __init__(self): super(myAppController, self).__init__() # load view uifile = 'myApp.ui' uic.loadUi(uifile, self) # I can access UI elements like that self.pb_Verify.clicked.connect(self.slot_verify) # for slot in main.py # Calling slot from mySubclass self.pb_EliminateVerifErrors.clicked.connect(mySubclass.fixErrors) # Show Main window if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) window = myAppController() window.show() sys.exit(app.exec_()) # mySubclass.py - separate file def fixErrors(self): # here I want to check state of checkbox if doABC.isChecked(): 在这种情况下不起作用。 我还试图通过来自self.doABC.isChecked() main.pyself的插槽来传递其他参数,但它不能以这种方式工作。此外,尝试访问self.doABCmain.doABC也不是一种选择。

在谷歌上做了很多搜索,但没有什么适合我的情况。

我的级别是GUI编程的初学者,所以我甚至不知道它应该是热门的。

1 个答案:

答案 0 :(得分:0)

你的问题是mysubclass需要引用doABC来检查它。

这是一个有效的例子:

main.py文件

#!python3
# main.py
import mySubclass
import sys
from PyQt5 import QtWidgets, uic


class myAppController(QtWidgets.QMainWindow):

    def __init__(self):
        super(myAppController, self).__init__()

        # load view
        uifile = 'myApp.ui'
        uic.loadUi(uifile, self)

        # I can access UI elements like that
        # self.pb_Verify.clicked.connect(self.slot_verify) # for slot in main.py

        # Calling slot from mySubclass
        self.pb_EliminateVerifErrors.clicked.connect(self.EliminateErrors)

    def EliminateErrors(self):
        mySubclass.fixErrors(self.doABC)

# Show Main window
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = myAppController()
    window.show()
    sys.exit(app.exec_())

这里我添加了一个由信号调用的类函数,并传递对doABC的引用。

mySubclass.py

# mySubclass.py - separate file
def fixErrors(doABC):
    # here I want to check state of checkbox
    if doABC.isChecked():
        print("Works!")

这里我从函数参数中删除了self,因为它不是类函数。

就是这样!你非常接近!