python - PyQt - QTableWidget 的 setText 方法获取 AttributeError

标签 python pyqt qtablewidget attributeerror

我使用 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/

相关文章:

python - 谁能告诉我为什么我在 python 中使用 gmtime 和 mktime 得到错误的结果?

同一类中的 Python 函数指针

Windows 上的 Python select.select() 错误 10022

python - PyQt Web 套件 Qwebview 的默认用户代理是什么以及如何获取它

c++ - QTableWidgetDervied::cellChanged

python - 清除整个根部

python - 当单词以 "|"(PSV) 分隔时如何读取文件?

python - PyQt 使用适当的抗锯齿调整 QMovie 的大小

python-3.x - PySide/PyQt : 'TypeError: native Qt signal is not callable' when trying to use 'currentItemChanged' with QTableWidget

c++ - QT从QTableWidgetItem继承到Widget并覆盖 '<'操作符