PyQt / PySide tableWidget.setItem表现得很奇怪

时间:2014-04-28 17:33:26

标签: python qt pyqt pyside qtablewidget

我的这段代码表现得非常糟糕。

data = {
    "test1":100,
    "test2":200,
    "test3":300 }

self.tableWidget.setColumnCount(len(list(data.viewitems())[0]))
self.tableWidget.setRowCount(len(data))

for i, name in enumerate(data):
    item1 = QtGui.QTableWidgetItem(name)
    self.tableWidget.setItem(i, 0, item1)
    item2 = QtGui.QTableWidgetItem(data[name])
    self.tableWidget.setItem(1,i,item2)

它会创建一个像'data'这样的表,但它正在跳过'test2'项,

但如果我以某种方式手工制作它们就像他们一样工作。

item = QtGui.QTableWidgetItem("test1")
self.tableWidget.setItem(0, 0, item)
item = QtGui.QTableWidgetItem("test2")
self.tableWidget.setItem(1, 0, item)
item = QtGui.QTableWidgetItem("test3")
self.tableWidget.setItem(2, 0, item)

1 个答案:

答案 0 :(得分:0)

正如@xndrme在评论中所说:

  

这个self.tableWidget.setItem(1,i,item2)应该是   self.tableWidget.setItem(I,1,ITEM2)

我已经使用PyQt4和Python26进行测试,第二列对我来说是空的,除非我将data[name]转换为这样的字符串:

item2 = QtGui.QTableWidgetItem(str(data[name]))

此行self.tableWidget.setColumnCount(len(list(data.viewitems())[0]))也会出现此错误:'dict' object has no attribute 'viewitems'所以我只设置了2列self.tableWidget.setColumnCount(2)