QTableView, цвет текста в ячейке при его редактировании
Имеется проект на PyQt5 с использованием базы данных. Для отображения таблицы использую QTableView.
В StyleSheet:
QTabelView {
color: white;
…
}
Но при редактировании конкретной ячейки (содержит текстовое значение), когда я непосредственно ввожу в неё новый текст, цвет текста становится чёрным, его не видно (использую темный фон).
Изображение проблемы:
[
Как исправить? Все перерыл уже.
Ответы (1 шт):
Пожалуйста, всегда предоставляйте минимально-воспроизводимый пример, который демонстрирует проблему.
QTableView - пишется так, а не так - QTabelView.
Как вариант. Когда вы выполняете редактирование ячейки,
где-то под капотом вызывается виджет QLineEditили QSpinBox и
все что я вам предлагаю попробовать -
это добавить в таблицу стилей :
QLineEdit {
background: #4CACBC;
color: #fff;
}
QLineEdit:focus {
background: #3C2C3E;
color: #FF06B7;
}
QDoubleSpinBox {
background: #3C2C3E;
color: #FF06B7;
}
from PyQt5 import QtCore, QtGui, QtWidgets
class Delegate(QtWidgets.QStyledItemDelegate):
def createEditor(self, parent, option, index):
editor = QtWidgets.QDoubleSpinBox(parent, decimals=2)
editor.setFrame(False)
editor.setMinimum(-1.7976931348623157e308)
editor.setMaximum(1.7976931348623157e308)
editor.setSizePolicy(
QtWidgets.QSizePolicy.Ignored, editor.sizePolicy().verticalPolicy()
)
return editor
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.centralwidget = QtWidgets.QWidget()
self.centralwidget.setObjectName("centralwidget")
self.setCentralWidget(self.centralwidget)
self.tableView = QtWidgets.QTableView()
self.tableView.setObjectName("tableView")
self.model = QtGui.QStandardItemModel(5, 5, self)
self.tableView.setModel(self.model)
self.layout = QtWidgets.QHBoxLayout(self.centralwidget)
self.layout.addWidget(self.tableView)
for row in range(self.model.rowCount()):
for column in range(self.model.columnCount()):
item = QtGui.QStandardItem("{row}{column}".format(row=row, column=column))
self.model.setItem(row, column, item)
delegate = Delegate(self.tableView)
self.tableView.setItemDelegateForColumn(0, delegate)
StyleSheet = '''
#centralwidget {
background-color: #A0D995;
}
QTableView {
border-radius: 0px;
color: white;
font-size: 21px;
background-color: #377D71;
}
QTableView::item:selected:active {
background: #53BF9D;
color: #ff0;
}
QTableCornerButton::section {
border: none;
background-color: #05595B;
}
QHeaderView, QHeaderView::section {
color: #ff0;
font-size: 25px;
background-color: #05595B;
}
QHeaderView::section:horizontal {
background-color: #05595B;
}
QLineEdit {
background: #4CACBC;
color: #fff;
}
QLineEdit:focus {
background: #3C2C3E;
color: #FF06B7;
}
QDoubleSpinBox {
background: #3C2C3E;
color: #FF06B7;
}
'''
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
app.setStyleSheet(StyleSheet)
w = MainWindow()
w.resize(550, 300)
w.show()
sys.exit(app.exec_())



