访问QMainWindow类变量Pyside/PyQ

2024-10-05 14:33:01 发布

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

我正在用Python编写一个GUI应用程序,它使用多个.py脚本。AINA/AINI需要访问的其他类。将各种.py模块导入Ui没有问题_主窗口.py模块,但我似乎无法访问QMainWindow类变量。在

这是我正在尝试的快速伪代码:

class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)

        self.lineEditScanBarcode.returnPressed.connect(self.LoginAttempt)

    def LoginAttempt(self):
        self.user_barcode = self.lineEditScanBarcode.text()

从我对类变量的引用所做的阅读中,我得出的结论是,通过上述设置,我应该能够引用其他类中的“user_barcode”变量,如下所示:

^{pr2}$

我一直在使用“print”命令来测试它是否正常工作,但收到以下错误:

Attribute Error: type object 'MainWindow' has no attribute 'user_barcode'

有人能看到我明显犯的错误吗?我已经搜索过类似的查询,但没有找到任何相关的内容。在

谢谢!在

编辑:

这是应用程序执行_()设置,我不确定是否正确传递了父对象。在

if __name__ == '__main__':
    app = QApplication(sys.argv)
    showMainWindow = MainWindow()
    showReceipt = Receipt(MainWindow)
    showMainWindow.show()
    app.exec_()

我尝试过各种组合,但要么收到init错误,要么是引发的TypeError。在


Tags: 模块pyself应用程序uiinitdef错误
1条回答
网友
1楼 · 发布于 2024-10-05 14:33:01

示例代码不起作用的原因是MainWindow是一个,而user_barcode是该类的实例的属性。在

对于访问user_barcode属性的收据,它必须以某种方式使MainWindow实例可用。其中一种方法是将主窗口设置为收据的父窗口。在

这将允许收据使用parent method访问主窗口实例及其属性。当然,这意味着收据必须始终有一个主窗口作为它的父窗口,因此它的构造函数应该看起来更像这样:

class Receipt(QWidget, Ui_Receipt):
    def __init__(self, parent):
        if not isinstance(parent, MainWindow):
            raise TypeError('parent must be a MainWindow')
        super(Receipt, self).__init__(parent)
        self.setupUi(self)
        ...
        print(self.parent().user_barcode)

相关问题 更多 >