我正在測試使用PyQt構建的gui,我希望能夠使用PyQt事件循環啓動後執行的python代碼與app進行交互(app.exec_())。另一種說法是,我希望app.exec_的調用立即返回,就像gui是無模式的,後面跟着與gui交互的python代碼。在PyQt事件循環中執行Python代碼
我發現this在一個線程中運行PyQt循環的例子,但不想做非常規的事情。有沒有辦法讓PyQt消息循環繼續處理消息,同時在exec_被調用後在主線程中執行python代碼?
我正在測試使用PyQt構建的gui,我希望能夠使用PyQt事件循環啓動後執行的python代碼與app進行交互(app.exec_())。另一種說法是,我希望app.exec_的調用立即返回,就像gui是無模式的,後面跟着與gui交互的python代碼。在PyQt事件循環中執行Python代碼
我發現this在一個線程中運行PyQt循環的例子,但不想做非常規的事情。有沒有辦法讓PyQt消息循環繼續處理消息,同時在exec_被調用後在主線程中執行python代碼?
我明白了。我可以使用exec從主線程逐行執行測試腳本,然後從工作線程運行gui。
不完全確定你想要做什麼。您是否在尋找類似於PyQt的Py(known as PyCrust)?
這裏的一個選擇是調用`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()
。您可以將時間設置爲零,以使該功能立即排隊等待執行。
你能解釋一下在第二個線程中運行PyQt循環或你自己的附加代碼是什麼問題嗎?你將如何能夠同時執行兩個代碼路徑*沒有*兩個線程? – 2011-02-04 01:47:26
我可以在第二個線程中安排測試,但是一些測試涉及邏輯並且不止是單個函數或對象。有沒有辦法將一段python代碼傳遞給QThread並讓QThread執行該代碼作爲運行的一部分? – Cerberellum 2011-02-04 04:15:03