Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何更改pyqt5 QTableWidget中选定或单击的单元格的背景色?_Python_Pyqt_Pyqt5_Qtablewidget - Fatal编程技术网

Python 如何更改pyqt5 QTableWidget中选定或单击的单元格的背景色?

Python 如何更改pyqt5 QTableWidget中选定或单击的单元格的背景色?,python,pyqt,pyqt5,qtablewidget,Python,Pyqt,Pyqt5,Qtablewidget,我是pyqt的新手。我正在尝试更改QTableWidget中选定单元格的背景色。单击/选择时是否可以更改颜色,未选择时是否可以返回默认颜色 此外,属性cellClicked仅返回行号。如何同时获取行和列编号 from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem, QVBoxLayout class

我是pyqt的新手。我正在尝试更改QTableWidget中选定单元格的背景色。单击/选择时是否可以更改颜色,未选择时是否可以返回默认颜色

此外,属性cellClicked仅返回行号。如何同时获取行和列编号

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem, QVBoxLayout


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(1124, 801)
        self.tableWidget = QtWidgets.QTableWidget(Form)
        self.tableWidget.setGeometry(QtCore.QRect(30, 40, 1000, 600))
        self.tableWidget.setRowCount(15)
        self.tableWidget.setColumnCount(6)
        self.tableWidget.setAlternatingRowColors(True)
        self.tableWidget.setObjectName("tableWidget")
        for i, col_name in enumerate(['symbol', 'step', 'factor', 'initial_lot', 'max_streak', 'status']):
            self.tableWidget.setHorizontalHeaderItem(i, QTableWidgetItem(col_name))
        self.tableWidget.verticalHeader().setVisible(False)
        self.tableWidget.verticalHeader().setMinimumSectionSize(20)
        self.tableWidget.horizontalHeader().setStyleSheet(
            "QHeaderView::section{"
            "border-bottom: 1px solid #4a4848;"
            "background-color:white;"
        "}")

        self.tableWidget.cellClicked.connect(lambda x: self.print_selected(x))
        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))

    def print_selected(self, s):
        print(s)


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())
Python3.7.6,pyqt5使用qpalete.Highlight

pallete = self.tableWidget.palette()
hightlight_brush = pallete.brush(QPalette.Highlight)
hightlight_brush.setColor(QColor('red'))
pallete.setBrush(QPalette.Highlight, hightlight_brush)
self.tableWidget.setPalette(pallete)
cellClicked信号同时传递行和列:

void QTableWidget::单元格单击输入行,输入列

使用Qpalete。突出显示

pallete = self.tableWidget.palette()
hightlight_brush = pallete.brush(QPalette.Highlight)
hightlight_brush.setColor(QColor('red'))
pallete.setBrush(QPalette.Highlight, hightlight_brush)
self.tableWidget.setPalette(pallete)
cellClicked信号同时传递行和列:

void QTableWidget::单元格单击输入行,输入列


突出部分工作正常。但是,当cellClick之后触发“print_selected”功能时,cellClicked不会同时返回行和列。您可以观察到,如果运行上面的代码.self.tableWidget.cellClicked.connectlambda row,col:printrow,col,高亮显示部分工作正常。但是,当cellClick之后触发“print_selected”功能时,cellClicked不会同时返回行和列。您可以观察到,如果运行上面的代码。self.tableWidget.cellClicked.connectlambda row,col:printrow,col