数据库分页查询写入表格时,表格刷新过慢,平均耗时15s。导致时长原因是self.table_widget.horizontalHeader().setSectionResizeMode(col, QHeaderView.ResizeToContents)
'''刷新表格'''
def refresh(self):
self.table_widget.clearContents()
for row in range(self.fetched_data.__len__()):
for col in range(11):
temp = QTableWidgetItem(str(self.fetched_data[row][col]))
temp.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) # 设置不能编辑
self.table_widget.setItem(row, col, temp)
# for col in range(11):
# self.table_widget.horizontalHeader().setSectionResizeMode(col, QHeaderView.ResizeToContents)
# self.table_widget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
解决办法:禁用horizontalHearer的setSextionResizeMode。耗时1s以内。
解决方法:
'''信号与槽装饰器@pyqtSlot()'''
@PyQt5.QtCore.pyqtSlot(参数)
def on_发送者对象名称_发射信号名称(self, 参数):
pass
self.textedit = QTextEdit(self)
self.textedit.setObjectName("edit")
@pyqtSlot()
def on_edit_textChanged(self):
text = self.textedit.toPlainText()
print(text)
传递参数的点击事件必须用lambda方法
for i in range(10):
self.btn[i] = QPushButton(str(i),self)
self.btn[i].clicked.connect(lambda: self.btn_clicked(self.sender().text()))
# 连接槽函数并传递按钮参数
def btn_clicked(self,arg):
print(arg)
从数据库写入本地图片,再从本地读取图片显示过慢
photo = QtGui.QPixmap(IMAGE_DIR + str(self.tasks_table[self.stepNo]['step']) + '.png').scaled(self.label_pic.width(),self.label_pic.height())
改为从从数据库中存储的blob数据加载直接显示
qimg = QtGui.QImage.fromData(self.tasks_table[self.stepNo]['image']).scaled(self.label_pic.width(),self.label_pic.height())
photo = QtGui.QPixmap.fromImage(qimg)
速度明显提升