簡體   English   中英

PyQt運行時問題

[英]PyQt run time issue

我希望通過顯示qtwidget然后運行forloop來運行我的代碼,但它會運行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()

在循環之前添加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")

這是因為在tes對象初始化期間執行了for循環之后運行了app.exec_()

該窗口小部件僅在應用程序運行時顯示,而在初始化時不顯示。 您到底想在循環中做什么? 將其連接到信號或在事件中處理它可能會更好,但這完全取決於您要實現的目標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM