我使用 pyuic 从 Qt Designer 编译了一个 GUI 文件,并尝试找出如何将第一列中的所有单元格设置为相同的值 "n"
。
以下是我的代码:
class Ui_MainWindow(object):
...
def accinit(self):
for n in xrange(9):
item = self.tableWidget.item(n, 0)
item.setText(_translate("MainWindow", "n", None))
控制台输出:
AttributeError: 'NoneType' object has no attribute 'setText'
我只更改了一个单元格 (0,0) 的代码,并且它运行良好:
def accinit(self):
item = self.tableWidget.item(0, 0)
item.setText(_translate("MainWindow", "n", None))
(0,0) 处的单元格包含内容 “n”
。
我想也许 for 循环中不允许这样做,所以我将代码更改为:
def accinit(self):
for x in xrange(1):
item = self.tableWidget.item(0, 0)
item.setText(_translate("MainWindow", "n", None))
但是它仍然有效!为什么?
我已经引用了以下文章(但我仍然无法解决这个错误):
Python: Attribute Error - 'NoneType' object has no attribute 'something'
Python AttributeError: NoneType object has no attribute 'close'
最佳答案
我不太确定。但这可能会有所帮助。
它显示 None 类型对象错误
=> tableWidget.item 语句执行后 item 为 None
=> 对于某些 n,(n, 0) 处不存在任何项目,因此不返回任何项目
但它适用于 (0, 0)
=> 项目已存在于 (0, 0)
=> 检查你的 tableWidget 是否有标题?如果它有标题,则有一个非 None 项目 (0, 0),因此您可以为其设置文本。因此,只有 (0, x) 中有一个项目,并且它会针对 (1, 0) 抛出 NoneType 错误,而不会针对 (0, 0) 抛出 NoneType 错误。
可能的解决方案?或者更正
创建一个新项目,并使用 tableWidget.setItem(...) 来执行需要的操作。 类似的东西
for x in xrange(5):
item = QTableWidgetItem()
item.setText("blah blah")
self.tableWidget.setItem(n, 0, item)
关于python - PyQt - QTableWidget 的 setText 方法获取 AttributeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27140739/