Как создать правильный подкласс QAbstractTableModel из PyQt5 для кадра данных pandas? [дубликат]Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как создать правильный подкласс QAbstractTableModel из PyQt5 для кадра данных pandas? [дубликат]

Сообщение Anonymous »

Я создал этот собственный подкласс для своего проекта на основе нескольких ссылок в Интернете, однако при запуске проекта я получаю пустое окно.

Код: Выделить всё

class TableModel(QAbstractTableModel):
def __init__(self, data):
super().__init__()
self._data = data

def data(self, index, role=Qt.ItemDataRole.DisplayRole):
if index.isValid:
if role == Qt.ItemDataRole.DisplayRole:
value = self._data.iloc[index.row(), index.column()]
return str(value)

def rowCount(self, index):
return self._data.shape[0]

def columnCount(self, index):
return self._data.shape[1]

def headerData(self, section, orientation, role=Qt.ItemDataRole.DisplayRole):
# section is the index of the column/row.
if role == Qt.ItemDataRole.DisplayRole:
if orientation == Qt.Orientation.Horizontal:
return str(self._data.columns[section])

if orientation == Qt.Orientation.Vertical:
return str(self._data.index[section])

Код: Выделить всё

class DataWindow(QWidget):
def __init__(self):
super().__init__()

self.setWindowTitle("title")

self.table = QTableView()
self.data = pd.DataFrame()

self.model = TableModel(self.data)
self.table.setModel(self.model)
self.table.resize(800,600)

def display_table(self):
self.show()
Я изменил следующие разделы.

Код: Выделить всё

Qt.ItemDataRole.DisplayRole

Код: Выделить всё

Qt.Orientation.Horizontal
Я видел, что многие из них пытались использовать Qt.Horziontal или Qt.DisplayRole, однако они больше не поддерживаются таким образом. Я использовал документацию PyQt5, чтобы избежать каких-либо ошибок, но в окне не отображается кадр данных pandas. Мне еще предстоит найти в Интернете актуальное решение.

Подробнее здесь: https://stackoverflow.com/questions/793 ... andas-data
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»