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