有人可以告诉我这是怎么做到的吗?
我得到了main.py和gui.py(在pyqt4中制作)。
main.py运行一些代码,无论如何,print" hello world"我希望将此字符串传递给listWidget.addItem()
中的gui.py。
所以在main.py中我做了:
from gui import Ui_Form
send_str = "hello all"
ui.listWidget.addItem(send_str)
我收到错误:
NameError: global name 'ui' is not defined
。
指gui.py中的gui.py是
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Form = QtGui.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
如果我将两个代码都放在一个py中,那么所有代码都在工作。 如何分开这两个,因为我希望我的main.py在无限循环中执行,并且我不时想打开gui并检查什么是新的值main.py要发送到窗口?
答案 0 :(得分:0)
第一个问题是ui变量是if 名称的本地变量 ==“ main ”
第二个问题是if本身,因为导入模块时不会激活该分支,这类似于c中的main()
第3个问题:QT中的gui必须在主线程中运行。这意味着你的算法需要在另一个线程中运行(有一个替代定时器,但它很难实现)
查看有关QT线程的教程,并使用信号槽机制在gui线程和算法线程之间进行通信。