在表格的第三列中嵌入颜色选择器
时间: 2024-03-23 14:40:26 浏览: 56
要在表格的第三列中嵌入颜色选择器,可以使用`QColorDialog`对话框。以下是修改后的代码示例:
```
from PyQt5.QtWidgets import QWidget, QTableWidgetItem, QColorDialog
from PyQt5.QtGui import QColor
class MyMainWindow2(QWidget):
def __init__(self, fre):
super().__init__()
self.fre = fre
self.ui = Ui_Form2()
self.ui.setupUi(self)
print(self.fre)
self.ui.pushButton_3.clicked.connect(self.handleCalc)
num = 0
for i in fre:
self.ui.tableWidget.insertRow(num)
self.ui.tableWidget.setItem(num, 0, QTableWidgetItem(i[0]))
self.ui.tableWidget.setItem(num, 1, QTableWidgetItem(str(i[1])))
self.addColorPicker(num, i[2]) # 在第三列中添加颜色选择器
num += 1
def addColorPicker(self, row, color):
color_picker = QTableWidgetItem()
color_picker.setBackground(QColor(color))
self.ui.tableWidget.setItem(row, 2, color_picker)
self.ui.tableWidget.cellDoubleClicked.connect(self.handleColorPicker)
def handleColorPicker(self, row, column):
if column == 2:
color_picker = self.ui.tableWidget.item(row, column)
color = QColorDialog.getColor(color_picker.background().color(), self)
if color.isValid():
color_picker.setBackground(color)
self.ui.tableWidget.setItem(row, column, color_picker)
def handleCalc(self):
pass
```
在上述代码中,我们首先定义了一个名为`addColorPicker`的函数,该函数接收两个参数`row`和`color`,分别表示要添加颜色选择器的行索引和该行对应的颜色值。函数内部创建了一个`QTableWidgetItem`对象,并将其背景颜色设置为`color`。然后将该对象添加到表格的第三列中。接着,使用`self.ui.tableWidget.cellDoubleClicked.connect(self.handleColorPicker)`将表格的`cellDoubleClicked`信号连接到`handleColorPicker`槽函数上,以便在用户双击单元格时打开颜色选择器。最后,实现了`handleColorPicker`槽函数,该函数判断用户是否双击了第三列单元格,如果是则打开颜色选择器对话框,获取用户选择的颜色值并更新表格中对应的单元格。