gpt4 book ai didi

python - 访问 QMainWindow 类变量 - Pyside/PyQt

转载 作者:行者123 更新时间:2023-11-28 22:52:43 24 4
gpt4 key购买 nike

我正在用 Python 编写一个 GUI 应用程序,它使用多个 .py 脚本。我在 QMainWindow 中有一个变量,我需要在其他类中引用/访问它。将各种 .py 模块导入 Ui_MainWindow.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”变量,如下所示:

class Receipt(QWidget, Ui_Receipt):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.setupUi(self)

print(MainWindow.user_barcode)

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

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

任何人都可以看到我明显犯的错误吗?我在 SO 中搜索了类似的查询,但没有找到任何相关内容。

谢谢!

编辑:

这是 app.exec_() 设置,我不确定我是否正确传递了父项。

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

我已经尝试了各种组合,但我收到了 init 错误,或者引发了 TypeError。

最佳答案

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

要使 Receipt 访问 user_barcode 属性,它必须以某种方式使 MainWindow 实例可用。一种方法是将 MainWindow 设置为 Receipt 的父级。

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

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)

关于python - 访问 QMainWindow 类变量 - Pyside/PyQt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20205052/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com