尝试创建一个包含 QTableView 小部件的对话框类,一切都很好,信息被插入,但我无法理解为什么 pycharm 显示错误:“未解析类‘Dialog’的属性引用‘setModel’”
所有类代码在这里:
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)
向我解释发生了什么事并提出问题的解决方案。
您可以使用类型提示来确保 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