添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import * 
import sys
import time 
class my_thread(QThread):
    send_signal = pyqtSignal(str)
    def run(self):
        while True:
            date = QDateTime.currentDateTime()
            current_time = date.toString("yyyy-MM-dd hh:mm:ss")
            self.send_signal.emit(current_time)
            time.sleep(1)
            print("更新thread! ", current_time)
class NewTableWidget(QWidget):
    sum = 0
    def __init__(self):
        super(NewTableWidget, self).__init__()
        self.resize(800,300)
        self.setWindowTitle('例子')
        # 表头标签
        heaerlabels = ['标题1','标题2']
        # 行数和列数
        self.rowsnum, self.columnsnum = 2, len(heaerlabels) #默认2行2列
        self.TableWidget=QTableWidget(self.rowsnum,self.columnsnum) 
        #todo 优化 2 设置水平方向表格为自适应的伸缩模式
        self.TableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
        self.TableWidget.verticalHeader().setSectionResizeMode(QHeaderView.Stretch)
        #Todo 优化 5 将行与列的高度设置为所显示的内容的宽度高度匹配
        QTableWidget.resizeColumnsToContents(self.TableWidget)
        QTableWidget.resizeRowsToContents(self.TableWidget)
        #设置水平方向的表头标签与垂直方向上的表头标签,注意必须在初始化行列之后进行,否则,没有效果
        self.TableWidget.setHorizontalHeaderLabels(heaerlabels)
        #Todo 优化1 设置垂直方向的表头标签
        #TableWidget.setVerticalHeaderLabels(['行1', '行2', '行3', '行4'])
        # 添加单元格初始化内容
        for i in range(self.rowsnum):
            for j in range(self.columnsnum):
                newItem=QTableWidgetItem('数据'+str(i)+','+str(j))
                newItem.setTextAlignment(Qt.AlignCenter)
                self.TableWidget.setItem(i,j,newItem)
        layout = QVBoxLayout()
        layout.addWidget(self.TableWidget)
        layout.addWidget(self.switch_btn)
        self.setLayout(layout)  
    # 单击按钮的槽
    def on_clicked(self):
        self.sum+=1
        if self.sum % 2 == 0:
            self.myThread.send_signal.disconnect(self.switch_slot)
            self.switch_btn.setText("重新更新")
            self.myThread.terminate()
        else:
            self.myThread.send_signal.connect(self.switch_slot)
            self.switch_btn.setText("终止更新")
            self.myThread.start()
    # 连接信号的槽
    def switch_slot(self, text):
        # 更新表格内容
        for i in range(self.rowsnum):
            for j in range(self.columnsnum):
                newItem=QTableWidgetItem('数据: '+text)
                newItem.setTextAlignment(Qt.AlignCenter)
                self.TableWidget.setItem(i,j,newItem)
        self.TableWidget.update()
if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = NewTableWidget()
    win.show()
    sys.exit(app.exec_())

3. 效果

#python代码 table=MainWindow_ui.tableWidget_2 table.setItem(i,0,QtWidgets.QTableWidgetItem(str(jcb.Name))) 发现数据并不是想象中跟线程运行那样实时的,要点一下才能显示出数据来 并且还会出现一些问题 为了做出对比,我将作业名的表格填写改成table.setItem的方式,其他格子用信号量机制,可以很清楚的看到问题所在!!!! 核心是要通过qt的槽函数来发射信 在涉及到大数据量的数据处理时,很容易页面卡死,那么怎么搞呢,费了好久时间,终于找到了个方法,在此分享一下:那就是在耗时的程序部分(如循环内)添加实时刷新页面的代码。 self.table = QtWidgets.QTableWidget() self.table.setColumnCount(4) self.table.setStyleSheet( '''QWidget{min-height: 20px; font-size:10pt;border-radius:3px;background-color:rgb(240,248,255);color: rgb 1、pyqt界面的操作主要有QPushButton按钮、QLabel标签、QLineEdit文本编辑、QPixmap图像载入与QLabel联用、QTableWidget(19,3)表格等,界面的刷新主要是对标签、文本、图像、表格等相关数据进行刷新。有了这些基本的搭建功能模块,我们需要通过QGridLayout()、QFormLayout()、QBoxLayout()等Layout将这些模块按照自己... QTabelWidget表格的插入、删除、更新以及配合QFile进行表格内容的长期存储 【1】QTabelWidget界面初始化 【2】QTabelWidget效果图 【3】QTabelWidget初始化 【4】QTabelWidget内容写入文件和读出 【5】QTabelWidget插入表格和写入文件 【6】QTabelWidget写文件函数和都文件函数 【7】QTabelWidget表格上下页 【8】QTabelWidget表格滑动事件Event