Как оформить QTableWidget в Pyqt5

#python #pyqt #qtstylesheets

Вопрос:

В настоящее время я стилизую свое графическое приложение, но у меня возникли некоторые проблемы со стилизацией моего QTableWidget, потому что, как вы можете видеть на картинке, в верхнем левом углу моего QTableWidget есть небольшая белая область, и я хочу, чтобы она была светло-голубой, как и остальная часть таблицы.

Изображение графического интерфейса

Это код того, как я до сих пор стилизовал:

 def start_ui():
    app = QtWidgets.QApplication(sys.argv)
    style = """
        QFrame{
            color: blue;
            background: lightgreen;
            font-weight: bold;
        }
        QLabel{
            color: blue;
            font-weight: bold;
        }
        QLineEdit{
            color: blue;
            border-style: solid;
            border: 2px solid black;
            background: lightblue;
            font-weight: bold;
        }
        QPushButton{
            border-style: solid;
            border: 2px solid black;
            color: darkblue;
            background: lightblue;
            font-weight: bold;
        }
        QTableWidget{
            background: lightblue;
        }
    """
    app.setStyleSheet(style)
    win = ModbusLoggerWindow()
    win.show()
    sys.exit(app.exec_())
 

А затем у меня есть эти три строки в классе, где я создаю свой QTableWidget, и эти строки стилизуют мои вертикальные и горизонтальные заголовки:

     stylesheetHeader = "::section{background-color: lightblue}"
    self.tableWidget.horizontalHeader().setStyleSheet(stylesheetHeader)
    self.tableWidget.verticalHeader().setStyleSheet(stylesheetHeader)
 

Ответ №1:

Этот элемент в верхней левой части не является частью QHeaderView, а является QAbstractButton, поэтому возможным решением является применение таблицы стилей непосредственно к кнопке:

 button = self.tableWidget.findChild(QAbstractButton)
button.setStyleSheet("background-color: lightblue")
 

Чтобы избежать использования findChild, его можно установить с помощью QTableWidget:

 stylesheet = """
QHeaderView::section{background-color: lightblue}
QAbstractButton{background-color: lightblue}
"""
self.tableWidget.setStyleSheet(stylesheet)