Python QTableWidget整数

Python QTableWidget整数,python,integer,pyqt,qtablewidgetitem,Python,Integer,Pyqt,Qtablewidgetitem,我正在尝试在我的QTableWidget中插入和显示整数。它们不显示。如果我将所有内容都转换为字符串,它就可以工作,但是我不能对列进行数字排序——只能按词汇(1、10、100等)排序。这是使用PyQt 我尝试了一些建议的解决方案,使用QTableWidgetItem.setData(someRole,intValue),但没有显示任何内容。我已经试过了,Qt.UserRole,DisplayRole和Edit Role。(我不明白为什么需要这些角色来显示整数,但我只是按照示例进行了介绍)。我的具

我正在尝试在我的QTableWidget中插入和显示整数。它们不显示。如果我将所有内容都转换为字符串,它就可以工作,但是我不能对列进行数字排序——只能按词汇(1、10、100等)排序。这是使用PyQt

我尝试了一些建议的解决方案,使用QTableWidgetItem.setData(someRole,intValue),但没有显示任何内容。我已经试过了,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)
此外,读回数据的建议仅显示对象位置,而不是实际数据。例如,使用Eric作为解释器外壳:

item.data(Qt.DisplayRole)

响应:0x1f01fa60处的PyQt4.QtCore.QVariant对象

或者这个:

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

响应:0x1e904a80处的sip.voidptr对象


任何洞察都将不胜感激。

您的思路是正确的。您的代码不工作,因为您没有调用
QTableWidgetItem
setData()
函数,而是试图为其赋值。你有

item.setData = (Qt.DisplayRole,intValue)
而不是

item.setData(Qt.DisplayRole,intValue)
而且,当读取回数据时,显示的不仅仅是位置,而是数据本身。您应该发现
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_())

它起作用了!!谢谢你,加里。虽然我仍然不确定这些角色与这项工作的正确性有什么关系。@GarryHughes有可能给他们浮动吗?