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)
self.TableWidget=QTableWidget(self.rowsnum,self.columnsnum)
self.TableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.TableWidget.verticalHeader().setSectionResizeMode(QHeaderView.Stretch)
QTableWidget.resizeColumnsToContents(self.TableWidget)
QTableWidget.resizeRowsToContents(self.TableWidget)
self.TableWidget.setHorizontalHeaderLabels(heaerlabels)
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_())
#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