Я создаю таблицу Qt на Python для отображения большого DataFrame pandas. В таблице используется пользовательская PandasTableModel (подкласс QAbstractTableModel) для подключения к DataFrame, и я хочу условно выделить ячейки — например, красным для значений False и зеленым для True.
Я нашел два способы сделать это:
Использование метода data в модели: возврат определенного цвета фона для определенных ячеек в зависимости от их значения.
class PandasTableModel(QtCore.QAbstractTableModel):
...
@override
def data(self, index, role):
if not index.isValid():
return None
value = self._dataframe.iloc[index.row(), index.column()]
if role == QtCore.Qt.ItemDataRole.DisplayRole:
return str(value)
elif role == QtCore.Qt.ItemDataRole.BackgroundRole:
if value == "True":
return QtGui.QColor(0, 255, 0, 100)
elif value == "False":
return QtGui.QColor(255, 0, 0, 100)
return None
Использование метода рисования пользовательского делегата: установка цвета фона ячейки в отрисовке
Использование метода рисования пользовательского делегата: установка цвета фона ячейки в отрисовке
Использование метода рисования пользовательского делегата: установка цвета фона ячейки в отрисовке
Использование метода рисования пользовательского делегата: установка цвета фона ячейки в отрисовке
Использование метода рисования пользовательского делегата: установка цвета фона ячейки в отрисовке
Использование метода рисования пользовательского делегата code> метод делегата (подкласс QItemDelegate):
class PandasItemDelegate(QtWidgets.QItemDelegate):
...
@override
def paint(self, painter, option, index):
super().paint(painter, option, index)
value = index.data(QtCore.Qt.ItemDataRole.DisplayRole)
if value in ["True", "False"]:
color = QtGui.QColor(0, 255, 0, 100) if value == "True" else QtGui.QColor(255, 0, 0, 100)
painter.fillRect(option.rect, color)
Какой подход будет более эффективным, особенно для большого DataFrame, с точки зрения памяти и скорости обработки?
Какой подход будет более эффективным, особенно для большого DataFrame, с точки зрения памяти и скорости обработки?
Какой подход будет более эффективным, особенно для большого DataFrame, с точки зрения памяти и скорости обработки?
Какой подход будет более эффективным, особенно для большого DataFrame, с точки зрения памяти и скорости обработки?
Какой подход будет более эффективным, особенно для большого DataFrame, с точки зрения памяти и скорости обработки?
Какой подход будет более эффективным, особенно для большого DataFrame? п>
Я создаю таблицу Qt на Python для отображения большого DataFrame pandas. В таблице используется пользовательская PandasTableModel (подкласс QAbstractTableModel) для подключения к DataFrame, и я хочу условно выделить ячейки — например, красным для значений False и зеленым для True. Я нашел два способы сделать это: [list] [*][b]Использование метода data в модели[/b]: возврат определенного цвета фона для определенных ячеек в зависимости от их значения. [code]class PandasTableModel(QtCore.QAbstractTableModel): ... @override def data(self, index, role): if not index.isValid(): return None value = self._dataframe.iloc[index.row(), index.column()] if role == QtCore.Qt.ItemDataRole.DisplayRole: return str(value) elif role == QtCore.Qt.ItemDataRole.BackgroundRole: if value == "True": return QtGui.QColor(0, 255, 0, 100) elif value == "False": return QtGui.QColor(255, 0, 0, 100) return None [/code]
[*][b]Использование метода рисования пользовательского делегата[/b]: установка цвета фона ячейки в отрисовке
[*][b]Использование метода рисования пользовательского делегата[/b]: установка цвета фона ячейки в отрисовке
[*][b]Использование метода рисования пользовательского делегата[/b]: установка цвета фона ячейки в отрисовке
[*][b]Использование метода рисования пользовательского делегата[/b]: установка цвета фона ячейки в отрисовке
[*][b]Использование метода рисования пользовательского делегата[/b]: установка цвета фона ячейки в отрисовке
[*][b]Использование метода рисования пользовательского делегата[/b] code> метод делегата (подкласс QItemDelegate): [code]class PandasItemDelegate(QtWidgets.QItemDelegate): ... @override def paint(self, painter, option, index): super().paint(painter, option, index) value = index.data(QtCore.Qt.ItemDataRole.DisplayRole) if value in ["True", "False"]: color = QtGui.QColor(0, 255, 0, 100) if value == "True" else QtGui.QColor(255, 0, 0, 100) painter.fillRect(option.rect, color) [/code]
[/list] Какой подход будет более эффективным, особенно для большого DataFrame, с точки зрения памяти и скорости обработки?
Какой подход будет более эффективным, особенно для большого DataFrame, с точки зрения памяти и скорости обработки?
Какой подход будет более эффективным, особенно для большого DataFrame, с точки зрения памяти и скорости обработки?
Какой подход будет более эффективным, особенно для большого DataFrame, с точки зрения памяти и скорости обработки?
Какой подход будет более эффективным, особенно для большого DataFrame, с точки зрения памяти и скорости обработки?
Какой подход будет более эффективным, особенно для большого DataFrame? п>
Я создаю таблицу Qt на Python для отображения большого DataFrame pandas. В таблице используется пользовательская PandasTableModel (подкласс QAbstractTableModel) для подключения к DataFrame, и я хочу условно выделить ячейки — например, красным для...
Я создаю таблицу Qt на Python для отображения большого DataFrame pandas. В таблице используется пользовательская PandasTableModel (подкласс QAbstractTableModel) для подключения к DataFrame, и я хочу условно выделить ячейки — например, красным для...
Я создаю программное обеспечение для управления персоналом для собственного использования, и мне бы хотелось, чтобы мой QListView был красивее и информативнее, чем при использовании QStandardItemModel и QStandardItem. По существу Мне бы хотелось,...
Я создал этот собственный подкласс для своего проекта на основе нескольких ссылок в Интернете, однако при запуске проекта я получаю пустое окно.
class TableModel(QAbstractTableModel):
def __init__(self, data):
super().__init__()
self._data = data...