我想通过显示qwidget然后运行for循环来运行我的代码, 但它运行forloop然后向我显示我的小部件。为什么是这样?
class tes(QWidget):
def __init__(self):
super(tes, self).__init__()
self.initUI()
for i in range (1000000):
print("s")
def initUI(self):
t = QTableWidget(8,8,self)
self.show()
self.resize(1000,1000)
t.setGeometry(0,0,500,500)
t.show()
def main():
app = QApplication(sys.argv)
t = tes()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
答案 0 :(得分:9)
在循环之前添加QApplication.processEvents()
。您的小部件将显示,但无响应。要使应用程序响应,请将processEvents()
调用添加到循环的某些步骤。
示例:
def __init__(self):
super(tes, self).__init__()
self.initUI()
QApplication.processEvents()
for i in range (1000000):
if not i % 3: # let application process events each 3 steps.
QApplication.processEvents()
print("s")
答案 1 :(得分:0)
这是因为在app.exec_()
对象初始化期间执行for循环后运行tes
。
答案 2 :(得分:0)
小部件仅在应用程序运行时显示,而不是在初始化时显示。你究竟想在循环中做什么?将它连接到信号或在事件中处理它可能更好,但这一切都取决于你想要实现的目标。