python - 从 PyQt 事件循环中执行 Python 代码

标签 python multithreading events loops pyqt

我正在测试使用 PyQt 构建的图形用户界面,我希望能够使用在 PyQt 事件循环启动后执行的 Python 代码与图形用户界面进行交互 (app.exec_())。另一种说法是,我希望对 app.exec_ 的调用立即返回,就像 gui 是无模式的一样,然后是与 gui 交互的更多 python 代码。

我找到了 this在线程中运行 PyQt 循环但不想做一些非常规的事情的例子。有什么方法可以让 PyQt 消息循环继续处理消息,同时在调用 exec_ 后在主线程中执行 python 代码?

最佳答案

此处的一个选项是在调用 `exec_()' 之后使用 QtCore.QTimer.singleShot() 调用来启动您的 python 代码。

例如:

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)

    # Setup the GUI.    
    gui = MyGui()
    gui.showMainWindow()

    # Post a call to your python code.
    QtCore.QTimer.singleShot(1000, somePythonFunction)

    sys.exit(app.exec_()) 

这将在 1 秒后执行函数 somePythonFunction()。您可以将时间设置为零,以使添加的函数立即排队等待执行。

关于python - 从 PyQt 事件循环中执行 Python 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4893748/

相关文章:

python - 使用 pydot 查找开始、结束和循环

Java Swing 线程改变 UI - 并发症

javascript - 当点击单元格,输入值,但该值与之前的值相同时,Google脚本触发事件

python - 如果每个值都相等,则删除 pandas 数据框行

python - 中央小部件的 pyqt 设计器和布局

python - 查找函数输出的输入依赖关系

c++ - 多线程环境下初始化的内存语义(C++)

c# - 如何在 C# 中创建基于 DataTable.Rows.Count 的对象?

javascript - 浏览器允许卸载多少事件?

events - CLI Dart : onPause, onResume,onDone 未按预期启动