PyQt运行时问题

时间:2012-03-08 17:27:15

标签: python qt pyqt

我想通过显示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()

3 个答案:

答案 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)

小部件仅在应用程序运行时显示,而不是在初始化时显示。你究竟想在循环中做什么?将它连接到信号或在事件中处理它可能更好,但这一切都取决于你想要实现的目标。