2016-04-13 212 views
2

我用qtDesigner創建了這個簡單的用戶界面,我想每10秒更新一次函數的值,但我不知道該怎麼做。我嘗試過不同的東西,但沒有任何工作。pyQt:我如何更新標籤?

def example(): 
    ... 
    return text 

UI:

class Ui_Form(object): 
    def setupUi(self, Form): 
     Form.setObjectName("Form") 
     Form.resize(400, 300) 
     self.label = QtWidgets.QLabel(Form) 
     self.label.setGeometry(QtCore.QRect(165, 125, 61, 16)) 
     self.label.setObjectName("label") 

     self.retranslateUi(Form) 
     QtCore.QMetaObject.connectSlotsByName(Form) 

    def retranslateUi(self, Form): 
     _translate = QtCore.QCoreApplication.translate 
     Form.setWindowTitle(_translate("Form", "Form")) 
     self.label.setText(_translate("Form", plsupdatethis) 

if __name__ == "__main__": 
    import sys 
    app = QtWidgets.QApplication(sys.argv) 
    Form = QtWidgets.QWidget() 
    ui = Ui_Form() 
    ui.setupUi(Form) 
    Form.show() 
    sys.exit(app.exec_()) 

回答

5

理想情況下,你需要創建的QWidget一個子類(而不是簡單地實例它,你與Form做的方式)。但是,這是一個你可以通過最小的改變來完成的方法。

您有一個能夠更新標籤的功能。然後使用QTimer定期觸發它(在這種情況下,每隔10秒)。

import datetime 

if __name__ == "__main__": 
    import sys 
    app = QtWidgets.QApplication(sys.argv) 
    Form = QtWidgets.QWidget() 
    ui = Ui_Form() 
    ui.setupUi(Form) 
    Form.show() 

    def update_label(): 
     current_time = str(datetime.datetime.now().time()) 
     ui.label.setText(current_time) 

    timer = QtCore.QTimer() 
    timer.timeout.connect(update_label) 
    timer.start(10000) # every 10,000 milliseconds 

    sys.exit(app.exec_()) 
+0

這是完美的,非常感謝你! –