基本上我有一个程序将在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