在代码中编辑QTableWidget的单元格内容

时间:2014-02-22 21:13:14

标签: python pyqt cell qtablewidget

在我的代码中,我创建了一个包含50列和2行的QTableWidget。 通过执行一个函数,Python放入了我之前创建的单元格列表元素。但是,我不知道如何修改这些细胞。 例如,我想获取(x,y)单元格的当前数据并添加整数。所以我试过了:

content = int(self.ui.table.item(X, Y).text()) #I've just strings in my cells
self.ui.table.item(X, Y).setText(str(content + 1)

但是那段代码,不行。 我也试过了:

a=self.ui.table.item(X,Y)
print(a.data(0).toString())

但是Python回复了我:

'NoneType' object has no attribute 'data'

2 个答案:

答案 0 :(得分:1)

试试这个,希望这会奏效:

val = 21                            # integer value
row = X                             # this is your row number
self.ui.table.insertRow(row)        # here you decide in which row
item = QTableWidgetItem(str(val))   # create a new Item
self.ui.table.setItem(row,Y, item)

这将覆盖QTableWidget单元格的X,Y索引处的值。

答案 1 :(得分:1)

如果你使用QtDesigner创建用户界面,特别是表格,可能是你遇到了实例问题,Qtdesigner创建了表格(QTablewiget)但没有在表格内部创建单元格(QTableWidgetItem),这就是原因当您尝试获取 X、Y 项时,您会得到一个“noneType”对象,我知道这听起来很疯狂,有 3 种方法可以解决这些问题:

第一:您可以创建单个项目作为@zeb 显示

2do : 用一个值填充 QtDesigner 上的单元格,用这个 Qtdesigner 创建表格项

3th : 你可以在 setupUi 函数上创建你需要使用的每个元素:

item = self.table.item(X,Y)
item.setText(_translate("MainWindow", " "))