Anonymous
PyQt, Qtable очищает столбец при включенной сортировке
Сообщение
Anonymous » 26 янв 2025, 06:16
У меня ошибка в следующей функции. Эта функция обновляет таблицу, регулирует размеры столбцов и сортирует таблицу. Но в некоторых случаях для некоторых строк текст в столбце 3 и 4 пуст. Я обнаружил, что это происходит в разделе "код проблемы".
Что я не так делаю в этом разделе? Я просто хочу изменить размер определенных столбцов.
Пожалуйста, помогите разобраться в проблеме или укажите мои ошибки.
Код: Выделить всё
def print_day_worklog(self):
logging.info('RefReshing day worklog table')
selected_day = self.ui.dateDayWorklogEdit.date().toPyDate()
day_work = db.get_day_worklog(self.creds[3], selected_day)
self.ui.tableDayWorklog.setRowCount(len(day_work))
for row, entry in enumerate(day_work):
e0 = QtGui.QTableWidgetItem(entry[0])
e1 = QtGui.QTableWidgetItem(entry[1])
e2 = QtGui.QTableWidgetItem(entry[2].strftime('%H:%M'))
e3 = QtGui.QTableWidgetItem(entry[3].strftime('%H:%M'))
e4 = QtGui.QTableWidgetItem(utils.get_time_spent_string(entry[2],
entry[3]))
# debug
print e0.text(), e1.text(), e2.text(), e3.text(), e4.text()
self.ui.tableDayWorklog.setItem(row, 0, e0)
self.ui.tableDayWorklog.setItem(row, 1, e1)
self.ui.tableDayWorklog.setItem(row, 2, e2)
self.ui.tableDayWorklog.setItem(row, 3, e3)
self.ui.tableDayWorklog.setItem(row, 4, e4)
# problem code starts
self.ui.tableDayWorklog.horizontalHeader().setResizeMode(1,
QtGui.QHeaderView.Stretch)
for column in (0,2,3,4):
self.ui.tableDayWorklog.resizeColumnToContents(column)
self.ui.tableDayWorklog.horizontalHeader().setResizeMode(column,
QtGui.QHeaderView.Fixed)
self.ui.tableDayWorklog.horizontalHeader().setResizeMode(column,
QtGui.QHeaderView.Fixed)
self.ui.tableDayWorklog.sortByColumn(2,0)
# problem code ends
П.с. выглядит нечетко, но это потому что я пытаюсь отловить баг
Подробнее здесь:
https://stackoverflow.com/questions/144 ... ng-enabled
1737861414
Anonymous
У меня ошибка в следующей функции. Эта функция обновляет таблицу, регулирует размеры столбцов и сортирует таблицу. Но в некоторых случаях для некоторых строк текст в столбце 3 и 4 пуст. Я обнаружил, что это происходит в разделе "код проблемы". Что я не так делаю в этом разделе? Я просто хочу изменить размер определенных столбцов. Пожалуйста, помогите разобраться в проблеме или укажите мои ошибки. [code]def print_day_worklog(self): logging.info('RefReshing day worklog table') selected_day = self.ui.dateDayWorklogEdit.date().toPyDate() day_work = db.get_day_worklog(self.creds[3], selected_day) self.ui.tableDayWorklog.setRowCount(len(day_work)) for row, entry in enumerate(day_work): e0 = QtGui.QTableWidgetItem(entry[0]) e1 = QtGui.QTableWidgetItem(entry[1]) e2 = QtGui.QTableWidgetItem(entry[2].strftime('%H:%M')) e3 = QtGui.QTableWidgetItem(entry[3].strftime('%H:%M')) e4 = QtGui.QTableWidgetItem(utils.get_time_spent_string(entry[2], entry[3])) # debug print e0.text(), e1.text(), e2.text(), e3.text(), e4.text() self.ui.tableDayWorklog.setItem(row, 0, e0) self.ui.tableDayWorklog.setItem(row, 1, e1) self.ui.tableDayWorklog.setItem(row, 2, e2) self.ui.tableDayWorklog.setItem(row, 3, e3) self.ui.tableDayWorklog.setItem(row, 4, e4) # problem code starts self.ui.tableDayWorklog.horizontalHeader().setResizeMode(1, QtGui.QHeaderView.Stretch) for column in (0,2,3,4): self.ui.tableDayWorklog.resizeColumnToContents(column) self.ui.tableDayWorklog.horizontalHeader().setResizeMode(column, QtGui.QHeaderView.Fixed) self.ui.tableDayWorklog.horizontalHeader().setResizeMode(column, QtGui.QHeaderView.Fixed) self.ui.tableDayWorklog.sortByColumn(2,0) # problem code ends [/code] П.с. выглядит нечетко, но это потому что я пытаюсь отловить баг Подробнее здесь: [url]https://stackoverflow.com/questions/14446633/pyqt-qtable-clears-column-when-sorting-enabled[/url]