简体   繁体   English

PyQt / PySide tableWidget.setItem行为异常

[英]PyQt/PySide tableWidget.setItem behaving wierdly

I've this piece of code that is behaving wierdly. 我的这段代码表现得很奇怪。

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)

It shoudl create a table like the 'data', but it's skipping the 'test2' item, 它应该创建一个类似于“数据”的表格,但是会跳过“ test2”项,

But if I somehow create them manualy like this they work. 但是,如果我以某种方式手动创建它们,它们将起作用。

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)

As @xndrme said in comment: 正如@xndrme在评论中所说:

This self.tableWidget.setItem(1,i,item2) should be self.tableWidget.setItem(i,1,item2) 此self.tableWidget.setItem(1,i,item2)应该是self.tableWidget.setItem(i,1,item2)

I've make test with PyQt4 and Python26 and second column is empty for me, unless I convert data[name] to string like this: 我已经使用PyQt4和Python26进行了测试,第二列对我来说是空的,除非我将data[name]转换为这样的字符串:

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

also this line self.tableWidget.setColumnCount(len(list(data.viewitems())[0])) gives this error: 'dict' object has no attribute 'viewitems' so I've simply set 2 columns self.tableWidget.setColumnCount(2) 同样这一行self.tableWidget.setColumnCount(len(list(data.viewitems())[0]))此错误: 'dict' object has no attribute 'viewitems'因此我仅设置了2列self.tableWidget.setColumnCount(2)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM