#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)