将字符串从一个py传递给gui

时间:2017-11-24 22:02:58

标签: python pyqt pyqt4

有人可以告诉我这是怎么做到的吗?

我得到了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要发送到窗口?

1 个答案:

答案 0 :(得分:0)

第一个问题是ui变量是if 名称的本地变量 ==“ main

第二个问题是if本身,因为导入模块时不会激活该分支,这类似于c中的main()

第3个问题:QT中的gui必须在主线程中运行。这意味着你的算法需要在另一个线程中运行(有一个替代定时器,但它很难实现)

查看有关QT线程的教程,并使用信号槽机制在gui线程和算法线程之间进行通信。