2016-04-13 41 views
2

私はqtDesignerでこの簡単なUIを作成しましたが、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

これは完璧です、本当にありがとうございます! –

関連する問題