2017-01-13 52 views
1

私は少し問題があります。私はいくつかの電圧などを監視する監視ソフトウェアを作ろうとしています。私はQT 4 Designerとpyqtを使ってUIを作っています。QLabelを動的に更新する - pyqt

私のコードは、この(これらのそれぞれ1モジュールである)のように構成されています

クリックして[Go]ボタン---> ---->ハブを起動デバイスに接続し、情報の配列を返します--- > infoを使って、さまざまなQLabelに適切な値を表示します。

私は、self.label.setText(ここのデータ)を使用してQLabelsを設定しています。

問題は、開始ボタンを繰り返し押して開始ハブモジュールを呼び出すようにしようとしていることです(デバイスから情報を取得し、その情報をQLabels)を4秒ごとに実行します。

テストとして、私は関数を3-4回連続してtime.sleep(4)をつけて呼び出しました。私はUIがハブを開始する最後の呼び出しの後にのみ更新することが分かった。

何も処理していないときだけUIが更新されるという問題があることは間違いありません。しかし、各反復後にすべてのQLabelをどのように更新するのか、本当にわかりません。私はself.label.repaint()を試みたが、それは何もしなかった。

誰でも手伝いできますか?

答えて

0

私が推測していることは、そうするのではなく、すべてのタスク(3-4回のハブモジュールコール、time.sleep、およびQLabels setText)をそのUI更新関数に入れることです。は長時間実行されます別のスレッドにタスクを割り当てます。

import threading 

def LongRunningTask(self): 
    for i in range(4): 
     hub_module_call   
     time.sleep(4) 
     self.label.setText 

def OnButton(self, event): 
    # Click go button 
    thread = threading.Thread(target=self.LongRunningTask) 
    thread.start() 
関連する問題