QT+mysql+python 效果:

发布于:2025-02-10 ⋅ 阅读:(56) ⋅ 点赞:(0)





# This Python file uses the following encoding: utf-8
import sys

from PySide6.QtWidgets import QApplication, QWidget,QMessageBox
from PySide6.QtGui import QStandardItemModel, QStandardItem  # 导入需要的类

# Important:
#     你需要通过以下指令把 form.ui转为ui_form.py
#     pyside6-uic form.ui -o ui_form.py

from ui_form import Ui_Widget

# 前提具备 连接库和建立一个user1的表
import pymysql as p  # 模块名尽量用小写 ,刚才有大写,所以一直在报红

class Widget(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.ui = Ui_Widget()
        self.ui.setupUi(self)

        # 连接按钮点击事件到槽函数
        self.ui.pushButton.clicked.connect(self.show_message)

    def show_message(self):
        # 弹出对话框,显示 "你好"
        QMessageBox.information(self, "消息", "你好")
        self.abc()


    def abc(self):
        # 连接数据库
        conn = p.connect(host='mysql.sqlpub.com', port=3306, user='laocooon',
                         passwd='fc12f7a5215e8e0a', db='huangjin')
        cur = conn.cursor()

        try:
            #查找
            sql = "select * from user1"
            cur.execute(sql)

            result = cur.fetchall()
            print(result)

            # 创建模型
            model = QStandardItemModel(len(result), len(result[0]))  # 行数和列数
            model.setHorizontalHeaderLabels(["ID", "Name", "Password"])  # 设置表头

            # 将数据填充到模型中
            for row_idx, row_data in enumerate(result):
                for col_idx, item in enumerate(row_data):
                    model.setItem(row_idx, col_idx, QStandardItem(str(item)))

            # 将模型设置到 QTableView
            self.ui.tableView.setModel(model)  # 注意:tableView 应该是通过 UI 文件定义的


            conn.commit()
        except Exception as e:
            print("数据操作错误", e)
            conn.rollback()
        finally:
            cur.close()
            conn.close()



if __name__ == "__main__":
    app = QApplication(sys.argv)
    widget = Widget()
    widget.show()
    sys.exit(app.exec())


网站公告

今日签到

点亮在社区的每一天
去签到