我的这段代码表现得非常糟糕。
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)
答案 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)