我正在测试使用 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/