[英]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.