Python QTableWidgetItem获取itmes方法不工作
我无法填充此表,我不知道我做错了什么,我一直在阅读一些帖子,似乎一切都是正确的…但是,我的表中没有显示任何内容 这是我的密码: totalProcess列表类似于totalProcess=[[list1]、[list2]、[list3]…]Python QTableWidgetItem获取itmes方法不工作,python,qtablewidget,qtablewidgetitem,Python,Qtablewidget,Qtablewidgetitem,我无法填充此表,我不知道我做错了什么,我一直在阅读一些帖子,似乎一切都是正确的…但是,我的表中没有显示任何内容 这是我的密码: totalProcess列表类似于totalProcess=[[list1]、[list2]、[list3]…] def updateTable(self,totalProcess): for x in xrange(10): for i in xrange(len(totalProcess[x])): item = QtG
def updateTable(self,totalProcess):
for x in xrange(10):
for i in xrange(len(totalProcess[x])):
item = QtGui.QTableWidgetItem(totalProcess[x][i])
self.ui.tableWidgetResults.setItem(x,i,item)
任何帮助都将不胜感激 是否设置了QTableWidget和属性?QTableWidget将仅显示其中的项目。否则代码是正确的
PS:没有必要像在其他一些语言中那样循环索引;您可以对列表中的x使用来迭代列表的元素(x
将是列表的元素)
我的意思是,假设我们从
从开始到结束,但我们不知道行数,就像在一个
采集系统中,我们只是不断添加新行,直到
收购完成。可能吗
是的,这是可能的,而且非常简单。例如,您可以这样做:
def AddRowToTable(self, list): # list is one of those from your totalProcess = [ [list1],[list2],[list3]...]
row = self.ui.tableWidgetResults.rowCount() # get current number of rows
self.ui.tableWidgetResults.insertRow(row) # insert new row
for col in range(0, len(list)): # add items into row
item = QtGui.QTableWidgetItem(QtCore.QString(unicode(list[col])))
self.ui.tableWidgetResults.setItem(row, col, item)
现在似乎它正在工作,但也许我得到了一些空的细胞
中间
这就是为什么我将list[col]
添加到此QtCore.QString(unicode(list[col]))
-以确保它是QtGui.QTableWidgetItem
输入参数的有效值类型
现在,您可以简单地遍历totalProcess
,并为其中的每个列表
调用addrowtable
。PS在做任何事情之前,不要忘记setColumnCount
。谢谢你的回答,行和列属性已经设置好了,但是在循环的每次迭代之后,表并没有按照需要用nex行“更新”…@user2919052我使用你的代码将项目添加到QTableWidget中,它可以工作。你能提供一个例子来说明你的问题吗?它现在是固定的,对不起,你是对的,列属性不正确,现在似乎它正在工作,但也许我得到一些空单元格之间,我将不得不看看它。我还有另一个疑问……是否有可能使tablr在每次迭代中增长???,我的意思是,如果列num是固定的,但行num在开始时不能固定,该怎么办?是否可以“更新”它并使表增长?也许使用.repaint()方法?我不认为有任何简单的方法可以让每行有不同数量的列,或者让每列有不同数量的行。但是,可以将rowCount设置为比所使用的最大行位置更高的值;没有任何项目的位置都是空的。不,不,也许我没有很好地解释,我的意思是,我们从开始到结束都知道os列的数量,10,但是我们不知道行的数量,就像在采集系统中一样,我们只是不断添加新行,直到采集完成。可能吗?您可能希望使用“for col,value in enumerate(list):”这样,您已经将值作为list[col]和col作为索引,因此不需要调用list[col]。当然,为什么不。。。虽然我认为这不会提高性能