类 'Dialog' 的未解析属性引用 'setModel

0 投票
1 回答
26 浏览
提问于 2025-04-11 22:47

我正在尝试创建一个对话框类,这个类里会包含一个QTableView控件,一切都很好,信息也能插入进去。但是我不明白为什么PyCharm会显示错误:“未解决的属性引用 'setModel' 对于类 'Dialog'”。

这里是整个类的代码:

from PyQt5.QtGui import QStandardItemModel, QStandardItem
from PyQt5.QtWidgets import QDialog, QTableView
from PyQt5.uic import loadUi


class Dialog(QDialog):
    def __init__(self):
        super(Dialog, self).__init__()
        loadUi("dialog.ui", self)
        self.table = self.findChild(QTableView, "tableView")

    def fill_table(self, data):
        column_names = ["full_name", "mail", "age", "phone_number"]
        model = QStandardItemModel(1, 4)
        model.setHorizontalHeaderLabels(column_names)

        for col_idx in range(4):
            item = QStandardItem(data[col_idx])
            model.setItem(0, col_idx, item)

        self.table.setModel(model)

给我解释一下发生了什么,并建议解决这个问题的方法。

1 个回答

0

你可以使用类型提示来确保 PyCharm 知道动态创建的对象是什么类型的:

class Dialog(QDialog):
    def __init__(self):
        super(Dialog, self).__init__()
        loadUi("dialog.ui", self)
        self.table: QTableView = self.findChild(QTableView, "tableView")

或者可以不使用多余的 findChild 方法

class Dialog(QDialog):
    def __init__(self):
        super(Dialog, self).__init__()
        loadUi("dialog.ui", self)
        self.tableView: QTableView

撰写回答