pyqt5 tablewidget 방법 스레드 동적 갱신 데이터

오늘 모든 사람이 스레드 pyqt5 tablewidget의 동적 새로 고침 데이터, 좋은 참조 값을 사용하는 방법을 공유하기위한 작은은, 우리가 도와주고 싶어요. 샤오 총통은 함께보고 후속하는
문제를

나는 데이터를 각 시간을 얻을 다음 스레드를 작성하려고하고 그래서, 스레드를 사용 해야할지하고 직접 테이블을 향해 안쪽으로 이러한 방법으로 데이터를 업데이트 할 수 있습니다.

#python代码
table=MainWindow_ui.tableWidget_2
table.setItem(i,0,QtWidgets.QTableWidgetItem(str(jcb.Name)))

검색 데이터는 꽤 실시간으로 실행 스레드, 포인트는 어떤 데이터를 표시하기

그리고 몇 가지 문제가있을 것입니다

문제의 이미지

비교를하려면 내가 양식 작업 이름 table.setItem 방식을 바꿀 것입니다 작성, 다른 그리드 신호 메커니즘을 사용하여 명확하게 어디에 문제가 거짓말을 볼 수 있습니다! ! ! ! 그림 삽입 설명 여기
솔루션

핵심은 프로그램이 신호 '출시 동의 "직접 위로의 경우, 홈 기능 QT으로 업데이트하고, 문제를 Qt는 작동합니다 슬롯을 통과하지 어셈블리 QT 창을 알리기 위해 신호를 전송하는 것입니다

스레드 함수

자신의 스레드 스레딩 패키지를 작성하는 원래의 클래스는 파이썬, 직접 QtCore.QThread을 수정하는 기대하지 않았다 차단 된 프로세스 threading.Event ()를 사용하는 것입니다 내부, 두 개의 혼합 함께, 그것은 또한 사용할 수 있습니다.
클래스 (작업 QtCore.QThread) # 참고 실 자체의 쿼트의 사용은 오히려 파이썬 자체 스레드 사용하기보다는
신호 2를 = QtCore.pyqtSignal (튜플) # 1이 신호는 그렇지 않으면 발광이 발생가, QObject를 내의 슬롯을 상속되지 있기 때문에 [연결 기능은 데이터 형식을 채우기 위해 전송된다 괄호 주어지는

  def signal2emit(self,var:tuple):
    self.signal2.emit(var)#朝connect的函数发射一个tuple
 
  def __init__(self, *args, **kwargs):#这里自己实现
    super(Job, self).__init__(*args, **kwargs)
    self.__flag = threading.Event()   # 用于暂停线程的标识
    self.__flag.set()    # 设置为True
    self.__running = threading.Event()   # 用于停止线程的标识
    self.__running.set()   # 将running设置为True
    self.signal2.connect(setItem)#连接发射函数
 
  def run(self):
    global SystemTime,TimePice#声明要用的全局变量
    while self.__running.isSet():#如果被设置为了true就继续,false就终止了
      self.__flag.wait()   # 为True时立即返回, 为False时阻塞直到内部的标识位为True后返回
      ###################
      #这里写线程要干的事情#
      ###################
      time.sleep(1)
 
  def pause(self):
    self.__flag.clear()   # 设置为False, 让线程阻塞
 
  def resume(self):
    self.__flag.set()  # 设置为True, 让线程停止阻塞
 
  def stop(self):
    self.__flag.set()    # 将线程从暂停状态恢复, 如何已经暂停的话
    self.__running.clear()    # 设置为False

세마포어를 수신하는 기능을 setItem

def setItem(var:tuple):#用于向jcb表格填写内容
  i=var[0]#行
  j=var[1]#列
  s=var[2]#值
  table=MainWindow_ui.tableWidget_2
  if j != 6 :
    table.setItem(i,j,QtWidgets.QTableWidgetItem(str(s)))
  else :
    table.cellWidget(i,6).setValue(s)#这是个进度条来的

테이블 함수 방향으로 데이터를 입력

이는 건조 물질의 메인 스레드의 일부입니다

파트 테이블에서 데이터 세트의 부분을 향해 바로 전에 주석이고, 이것은 양 Qthread하여 송신 신호에 충분하지 않다

def Print_Job():
  rowcol=len(Jcb_Ready_List)+len(Jcb_Wait_List)
  print(rowcol)
  #MainWindow_ui.tableWidget_2.setRowCount(rowcol)
  for i in range(0,rowcol):
    MainWindow_ui.tableWidget_2.showRow(i)
  #for i in range(rowcol,100):
  #  MainWindow_ui.tableWidget_2.hideRow(i)
  for i in range(0,len(Jcb_Ready_List)):
    jcb=Jcb_Ready_List[i]
    table=MainWindow_ui.tableWidget_2
                     #table.setItem(i,0,QtWidgets.QTableWidgetItem(str(jcb.Name)))
    MainThread.signal2emit((i,0,jcb.Name))
    #table.setItem(i,1,QtWidgets.QTableWidgetItem(str(jcb.Arrival_time)))
    MainThread.signal2emit((i,1,jcb.Arrival_time))
    #table.setItem(i,2,QtWidgets.QTableWidgetItem(str(jcb.Need_memory)))
    MainThread.signal2emit((i,2,jcb.Need_memory))
    #table.setItem(i,3,QtWidgets.QTableWidgetItem(str(jcb.Need_time)))
    MainThread.signal2emit((i,3,jcb.Need_time))
    #table.setItem(i,4,QtWidgets.QTableWidgetItem(str(jcb.Already_execution_time)))
    MainThread.signal2emit((i,4,jcb.Already_execution_time))
    #table.setItem(i,5,QtWidgets.QTableWidgetItem(str(jcb.Wait_time)))
    MainThread.signal2emit((i,5,jcb.Wait_time))
    #bar:QtWidgets.QProgressBar=MainWindow_ui.tableWidget_2.cellWidget(i,6)
    #bar.setValue(100-jcb.Need_time/(jcb.Already_execution_time+jcb.Need_time)*100)
    MainThread.signal2emit((i,6,100-jcb.Need_time/(jcb.Already_execution_time+jcb.Need_time)*100))

성취

동적으로 업데이트 데이터 테이블 위젯이 원활하게 실현! 그림 삽입 설명 여기
노인이 학습하는 방법을 참조하기 위해 파이썬 학습 사이트를 추천! 기본 파이썬 스크립트, 파충류,에서 장고, 데이터 마이닝,뿐만 아니라 전투에 프로그래밍 기법을 제로 분류 데이터 항목, 모든 사랑 학습 파이썬 작은 파트너에게 주어진! 파이썬 베테랑 하루 배우고 작은 세부 사항에주의 할 필요가 클릭에서 우리와 함께 할 수있는 몇 가지 방법을 공유하고, 기술의 타이밍을 설명해야 학습자 수집 파이썬

이 스레드는 pyqt5 tablewidget 사용 동적 데이터는 방법은 모두의 전체 내용을 공유 할 수있는 작은 일련의 새로 고침보다 더있다

게시 51 개 원래 기사 · 원 찬양 17 ·은 30000 +를 볼

추천

출처blog.csdn.net/haoxun02/article/details/104418738