我正在使用 Qt 设计器使用 PyQt4。这是我第一次使用它,所以我只是想了解一些事情,但这让我很难过。
我遇到的问题是,一旦定义和创建了 UI 窗口,我尝试调用一个函数来更新 UI 元素,它会产生“未定义”错误。
但是,如果我将相同的代码放在最初定义元素的代码块中,它就可以正常工作。
我在下面写了一个例子来更清楚地说明我的意思。
问题是我需要调用以更新来自不同模块的液晶显示器编号,该模块包含单击按钮时调用的函数。
为了展示这一点,我在 qtdesigner 中制作了一个带有 lcdnumber (lcd1) 和一个按钮 (button1) 的表单,在文件“testui.py”中编译了代码,从而创建了“MainWindow”类。
在 a.py 中,我放了:
import testui as interface
import sys
import b
from PyQt4 import QtCore, QtGui
ui= interface.Ui_MainWindow()
def updateui():
for i in range(0, 100):
ui.lcd1.setProperty("value", i)
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
test = QtGui.QMainWindow()
ui.setupUi(test)
ui.lcd1.setProperty("value", 1)
ui.button1.clicked.connect(b.updatelcd)
test.show()
app.exec_()
这将打开窗口,设置初始状态并将按钮连接到 b.py 中的函数。
在 b.py 中,我放了:
from a import updateui
def updatelcd():
updateui()
当我单击按钮时,这会调用 a.py 中的函数,这会导致错误:
“模块没有属性 lcd1”
这让我困惑了一段时间,因为 ui.lcd1.setProperty 在主循环中工作!
我正在做的事情一定有根本性的错误,但我无法解决。
任何想法表示赞赏
谢谢