有沒有辦法檢測當前執行是否在QDialog.exec()中間?如何檢測QDialog.exec()是否處於活動狀態
我是Python shell的DreamPie的作者,它可以讓你在Qt GUI顯示時運行Python代碼。它通過運行Qt事件循環達到1/10秒,然後檢查是否需要執行任何Python命令。事件循環由QTimer在超時後調用QApplication.quit()來停止。如果QDialog.exec()處於活動狀態,但是我不想調用QApplication.quit(),因爲它會破壞代碼。當前的解決方案是通過檢查QApplication.activeModalWidget()是否爲None來檢查是否有模態對話框處於活動狀態。但是,我目前有一個不與QDialog.exec()一起運行的模式對話框,並且無緣無故地阻止了Python命令。
有沒有一種方法可以退出事件循環,只要它不被QDialog.exec()遞歸調用?
謝謝!
你可以通過簡單地在QTimer中執行python來阻止事件循環。 –
你的對話框有拒絕/接受按鈕還是隻提供信息「OK」?如果只有確定按鈕是對話框的「接受」按鈕,則可以檢查結果是否已更改爲已接受。 –
棘輪怪胎:的確,我可以,但這將意味着代碼的重構,因爲它必須在沒有安裝Qt的情況下工作。 – Noam