pyqt5自动更新QTableview内容解决方案

首先是自己在网上找了很久,基本上大家给出的解决方案都是开通一个子线程,然后发射自定义的信号去更新QTableview的数据:

下面给你实例代码:

from PyQt5.Qt import *
import time

class ThreadTable(QThread):
    update_date = pyqtSignal() //自定义一个信号

    def __init__(self,parent=None,*args,**kwargs):
        super(ThreadTable, self).__init__(parent,*args,**kwargs)

    def run(self):
        cnt = 0
        while True:
            cnt += 1
            self.update_date.emit()  # 发射信号
            time.sleep(3)//每隔三秒钟发射一次


if __name__ == '__main__':
    window_thread = ThreadTable()
    window_thread.run()

下面对重要部分进行讲解:
如果需要在pyqt5中创建一个子线程,就需要自己创建一个类继承自QThread类,最重要的是要在自己写的类中重写run方法,线程在启动的时候才会执行run方法中的程序代码。

接下来在QMainwindow中写入如下代码:

form thread_moudle import ThreadTable
from PyQt5.Qt import *



class MyWindow(QMainWindow):
    def __init__(self):
        super(MyWindow, self).__init__()


        self.table_thread = ThreadTable() \\实例化子线程
        self.table_thread.start() \\启动线程

        self.table_thread.update_date.connect(self.table_data_update) \\将子线程信号连接到槽就可以了

    def table_data_update(self):
        print('这里写你的QTableview更新代码就可以了') \\业务逻辑代码,每过3秒钟就会执行一下业务代码

至于QTableview的更新就百度一下就可以,很多方法都可以更新。重点弄清楚QTableview数据模型

你可能感兴趣的:(python,pyqt5)