pyqt5 dataChanged
弄了格表格来自动统计,可在self.model.dataChanged.connect(self.tableEdit)
里遇到点问题,预想效果是改变了某个单元格里的内容后,根据大小来给自身赋值一个颜色
如:小于3500与大于9500则设置背景色或字体颜色为红色!
if vmodeIndex.column() == 3:
row, column = vmodeIndex.row(),vmodeIndex.column()
# 判断是否在位置列进行双击! abs()取绝对值,负数变正数;round()四舍五入,取整数!
# print(self.model.index(row,3).data())
data = self.model.index(row,3).data()
print(f'Data数据:{data}')
# 判断当前数据是否是纯数字!
if not data.isdigit():
item = QStandardItem('0')
self.model.setItem(row, 7, item)
item = QStandardItem('0')
self.model.setItem(row, 4, item)
return
if int(data) < 3500 or int(data) > 9500:
# 设置背景色
print('内容大于或小于系统预设值!')
item = QStandardItem(data)
# #self.model.setItem(vmodeIndex,)
item.setForeground(QBrush(QColor(255, 0, 0)))# 设置字体颜色
# # item.setBackground(QBrush(Qt.red))
self.model.setItem(row, column - 1, item)
边学边弄的,运行到self.model.setItem(row, column - 1, item) 这里就死循环崩溃! 这是干嘛呀 没理解错的话 你监听一个cell的变更 ,然后修改cell的外观继续触发cell的变更 不死循环才怪。 if self.model.index(row, column - 1).data() != data:
self.model.setItem(row, column - 1, item) 本帖最后由 marione 于 2024-9-18 18:08 编辑
在setItem前把信号关掉,以前遇到过
blockSignals 厉害了大佬
感谢各位,以解决
在self.model.setItem(row, column - 1, item) 前关闭信号检测!
页:
[1]