编程语言
首页 > 编程语言> > python – QTableWidget整数

python – QTableWidget整数

作者:互联网

我试图在我的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作为解释器shell:

item.data(Qt.DisplayRole)

响应:PyQt4.QtCore.QVariant对象位于0x1f01fa60

或这个:

item.data(Qt.EditRole).数据()

响应:sip.voidptr对象位于0x1e904a80

任何见解都表示赞赏.

解决方法:

你走在正确的轨道上.您的代码不起作用,因为您没有调用QTableWidgetItem的setData()函数,而是尝试为其赋值.你有

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_())

标签:qtablewidgetitem,python,integer,pyqt
来源: https://codeday.me/bug/20190929/1830856.html