Pyqt5子类访问GUI元素

2024-05-23 23:05:43 发布

您现在位置:Python中文网/ 问答频道 /正文

需要一个帮助从子类读写GUI元素。 代码:

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.py的slot调用传递其他参数,包括self或{},但它不是这样工作的。同时尝试访问main.doABC或{}不是一个选项。在

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

我的水平是GUI编程的初学者,所以我甚至不知道它应该是什么样子。在


Tags: pyselfuiinitmaindefguiwindow
1条回答
网友
1楼 · 发布于 2024-05-23 23:05:43

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

下面是一个工作示例:

在主.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在

^{pr2}$

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

就这样!你很亲密!在

相关问题 更多 >