基本上我有一個程序將在PySide qt框架中創建一個基本的Hello World程序。不同之處在於它在調用exec_()
之前在while循環中執行print("loop")
。直到用戶完成該程序後,循環纔會完成,因此循環完成時只會調用exec_()
。pyside qapplication exec while while循環
我的問題是,如果你這樣運行,print("loop")
會運行,但窗口不會響應,並且不顯示「Hello,loop!」)。如果您在while running:
下縮進qt_app.exec_()
,則該窗口將響應,但print("loop")
僅在關閉窗口之前執行一次,並在關閉該窗口後僅執行一次。
我需要能夠讓主窗口響應多次打印「循環」到控制檯。
import sys
from PySide.QtCore import *
from PySide.QtGui import *
qt_app = QApplication(sys.argv)
label = QLabel('Hello, loop!')
label.show()
running = True #only set to False when user is done with app in the real code.
while running:
#I am handling connections here that MUST be in continual while loop
print("loop")
qt_app.exec_()
我曾考慮過使用線程作爲最後的手段,因爲我認爲它是一個補丁而不是修復,也就是說,如果沒有其他「正確」的方式來處理它。別擔心,我沒有這樣的全局變量,所有東西都是在類中定義的,這僅僅是爲了構造目的。 – cellsheet
因爲您必須將對主python線程的控制交給Qt事件循環,所以沒有其他「正確」方法。 –
有沒有一種方法可以在該事件循環內設置代碼,或者它幾乎卡在它所在的位置? – cellsheet