2017-01-13 3 views
1

약간의 문제가 있습니다. 몇 가지 전압과 다른 것들을 모니터하는 모니터링 소프트웨어를 만들려고합니다. 내 UI를 만들기 위해 QT 4 Designer와 pyqt를 사용하고 있습니다.동적 업데이트 QLabel - pyqt

내 코드는이 (이들 각각은 모듈)과 같이 구성되어있다 :

클릭 이동 버튼 ---> ----> 허브를 시작 장치에 연결하고 정보의 배열을 반환 --- > info를 사용하고 다양한 QLabel에 적절한 값을 표시하십시오.

self.label.setText (여기에있는 데이터)를 사용하여 QLabels를 설정 중입니다.

문제는 이제 반복적으로 시작 허브 모듈을 호출하는 반복 시작 버튼을 만들려고합니다. 차례로 장치에서 정보를 가져 와서 해당 정보를 인쇄하는 모듈을 호출합니다. QLabels) 4 초마다.

테스트에서 필자는 함수를 3-4 회 연속으로 호출하고 그 사이에 time.sleep (4)를 호출했습니다. UI가 허브 시작을 마지막으로 호출 한 후에 만 ​​업데이트된다는 것을 알았습니다.

아무 것도 처리하지 않을 때에 만 UI가 업데이트된다는 것이 확실합니다. 그러나 각 반복 후에 모든 QLabel을 업데이트하는 방법을 확실히 모르겠습니다. 나는 self.label.repaint()를 시도했지만 아무 것도하지 않았다.

아무도 도와 줄 수 있습니까?

답변

0

내가 추측하는 바는 UI 업데이트 기능에 모든 작업 (3 ~ 4 번 허브 모듈 호출, time.sleep 및 QLabels setText)을 넣어야한다는 것입니다. 은 장기 실행 작업을 별도의 스레드에 넣기 :

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()