You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyQt5报错:name 'QTableWidgetItem' is not defined 求助

解决“name 'QTableWidgetItem' is not defined”错误

这个错误的核心原因是未正确导入QTableWidgetItem类,它属于PyQt/PySide的QtWidgets模块,以下是具体修复步骤:

1. 检查并修正导入语句

根据你使用的GUI框架版本,确保导入包含QTableWidgetItem:

  • PyQt5:
    from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem
    
  • PyQt6:
    from PyQt6.QtWidgets import QTableWidget, QTableWidgetItem
    
  • PySide2:
    from PySide2.QtWidgets import QTableWidget, QTableWidgetItem
    
  • PySide6:
    from PySide6.QtWidgets import QTableWidget, QTableWidgetItem
    

注意:不要只导入QTableWidget而遗漏QTableWidgetItem,这是新手最常见的疏漏。

2. 修正代码中的类引用

确保创建表格项时直接使用正确的类名(Qt类名采用驼峰式,首字母必须大写):

# 正确写法
item = QTableWidgetItem(str(your_data))
self.table.setItem(row, col, item)

完整修正示例代码

from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem
import sys
import mysql.connector

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.init_ui()
        self.load_db_data()

    def init_ui(self):
        self.table = QTableWidget(self)
        self.setCentralWidget(self.table)
        self.setWindowTitle("MySQL数据展示")

    def load_db_data(self):
        # 数据库连接配置(替换为你的实际信息)
        db_config = {
            "host": "localhost",
            "user": "root",
            "password": "your_password",
            "database": "your_database"
        }
        
        try:
            conn = mysql.connector.connect(**db_config)
            cursor = conn.cursor()
            cursor.execute("SELECT * FROM your_table")
            rows = cursor.fetchall()
            
            # 设置表格行列数
            if rows:
                self.table.setRowCount(len(rows))
                self.table.setColumnCount(len(rows[0]))
                # 填充数据
                for row_idx, row in enumerate(rows):
                    for col_idx, value in enumerate(row):
                        item = QTableWidgetItem(str(value))
                        self.table.setItem(row_idx, col_idx, item)
            else:
                self.table.setRowCount(0)
                self.table.setColumnCount(0)
                
            cursor.close()
            conn.close()
        except mysql.connector.Error as e:
            print(f"数据库错误: {e}")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

额外排查点

  • 检查是否拼写错误:比如写成QTableWidgetitem(小写i)或者QtableWidgetItem(小写t)
  • 确认你安装的GUI框架版本与导入语句匹配(比如不要混用PyQt5和PyQt6的导入)

内容的提问来源于stack exchange,提问作者Tunahan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 18:55:25