QTableWidget Integer

Я пытаюсь вставить и отобразить целые числа в моем QTableWidget. Они не отображаются. Он работает, если я конвертирую все в строки, но тогда я не могу сортировать столбцы численно – только лексически (1, 10, 100 и т. Д.). Это использует PyQt.

Я пробовал некоторые из предлагаемых решений, используя QTableWidgetItem.setData (someRole, intValue), bu, тогда ничего не отображается. Я пробовал, Qt.UserRole, DisplayRole и Edit Role. (Я не понимаю, почему эти Роли необходимы для отображения целых чисел, но только последовали за примерами). Мой специальный код:

item = QTableWidgetItem() item.setData = (Qt.DisplayRole,intValue) myTable.setItem(row, column, item) 

Следующий код работает, но только для строк:

  item = QTableWidgetItem(str(intValue)) myTable.setItem(row, column, item) 

Кроме того, предложения по чтению данных назад показывают только местоположение объекта, а не фактические данные. Например, используя Эрик как оболочку интерпретатора:

item.data (Qt.DisplayRole)

Ответ: объект PyQt4.QtCore.QVariant на 0x1f01fa60

или это:

item.data (Qt.EditRole) .data ()

Ответ: объект sip.voidptr на 0x1e904a80

Любое понимание очень ценится.

One Solution collect form web for “QTableWidget Integer”

Вы были на правильном пути. Ваш код не работает, потому что вы не вызываете функцию setData() QTableWidgetItem но пытаетесь присвоить ему значение. У тебя есть

 item.setData = (Qt.DisplayRole,intValue) 

вместо

 item.setData(Qt.DisplayRole,intValue) 

Кроме того, при чтении данных назад это не только отображаемое местоположение, но и данные как QVariant . Вы должны найти, что item.data(Qt.DisplayRole).toString() вернет ваши данные назад в виде строки, преобразовывая QVariant (через метод .toString() ).

Вот пример для быстрого демонстрации:

 import sys from PyQt4.QtGui import QApplication, QWidget, QTableWidget, QTableWidgetItem, QVBoxLayout from PyQt4.QtCore import Qt class Widget(QWidget): def __init__(self, parent=None): QWidget.__init__(self, parent) self.widget_layout = QVBoxLayout() self.table_widget = QTableWidget(101, 1) self.table_widget.setSortingEnabled(True) self.widget_layout.addWidget(self.table_widget) self.setLayout(self.widget_layout) for num in xrange(101): item = QTableWidgetItem() item.setData(Qt.EditRole, num) self.table_widget.setItem(num, 0, item) if __name__ == '__main__': app = QApplication(sys.argv) widget = Widget() widget.show() sys.exit(app.exec_()) 
 
Interesting Posts for Van-Lav

Специфичность импорта модуля python?

Как мне настроить процесс разработки TDD с помощью Google App Engine?

Выполнить несколько программ последовательно в одной командной строке Windows?

Как правильно установить бета-дистрибутив в python?

Ошибки встречались при установке pyopencv 2.1.0 с opencv-2.4.2

Класс Python, определенный в том же файле, что и другой класс, – как вы получаете доступ к тому, который указан позже в файле?

Получить выбранные данные, содержащиеся в инструменте выбора окна в Bokeh

Как выполнить функцию, когда uwsgi остановлен

heapq с обычным предикатом сравнения

Как извлечь доменное имя верхнего уровня (TLD) из URL-адреса

Невозможно получить импорт для работы в проекте web.py

Pandas _ metadata ошибки сохранения данных DataFrame

Избавление от вывода консоли при замораживании программ Python с помощью Pyinstaller

Сценарий Matlab не найден из django views.py

Как подождать, пока в Python не будет завершен только первый поток

Python - лучший язык программирования в мире.