質問

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,

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:

This self.tableWidget.setItem(1,i,item2) should be 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:

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)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top