用 Python 和 Qt Designer 显示数据库数据的完整指南

作为一名初入行的开发者,学会如何将图形化界面与数据库的连接是十分重要的技能。本文将通过一个简单的示例来指导你如何使用 Python 和 Qt Designer 来显示数据库中的数据。我们将一步步地梳理整个过程,并在每一步中明确使用的代码及其功能。

整体流程

下面的表格展示了实现“用 Python Qt Designer 显示数据库数据”的主要步骤:

步骤 描述
1 创建数据库并插入数据
2 使用 Qt Designer 设计用户界面
3 使用PyQt5加载设计的界面
4 连接到数据库
5 查询数据库数据并显示在界面上
6 完成并运行程序

步骤详解

1. 创建数据库并插入数据

首先,我们需要一个数据库来存储数据。可以使用 SQLite,这是一个轻量级的数据库,非常适合小型项目。

import sqlite3

# 连接到 SQLite 数据库 (如果文件不存在,会自动创建)
conn = sqlite3.connect('example.db')

# 创建一个游标对象,用于执行 SQL 命令
cursor = conn.cursor()

# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS users
                  (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''')

# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 30)")
cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 25)")
cursor.execute("INSERT INTO users (name, age) VALUES ('Charlie', 35)")

# 提交更改并关闭连接
conn.commit()
conn.close()

2. 使用 Qt Designer 设计用户界面

在 Qt Designer 中,我们可以创建一个简单的界面,包括一个表格用来显示数据。将其保存为 user_interface.ui

  • 在 Qt Designer 中,添加一个 QTableWidget
  • 保存界面文件。

3. 使用 PyQt5 加载设计的界面

接下来,我们需要使用 PyQt5 来加载这个用户界面。

首先,确保你已经安装了 PyQt5:pip install PyQt5

然后创建一个 Python 文件(如 app.py)并写入以下代码:

import sys
from PyQt5 import QtWidgets, uic

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        uic.loadUi('user_interface.ui', self)  # 加载 UI 文件

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

4. 连接到数据库

为了从数据库中获取数据,我们需要在应用程序中添加数据库连接的代码。

import sqlite3

def get_data():
    conn = sqlite3.connect('example.db')  # 连接到数据库
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM users")  # 查询所有用户
    data = cursor.fetchall()  # 获取所有数据
    conn.close()
    return data  # 返回数据

5. 查询数据库数据并显示在界面上

我们需要将查询的数据填充到 QTableWidget 中。我们将在 MainWindow 类中添加一个方法来完成这个任务。

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        uic.loadUi('user_interface.ui', self)  
        self.load_data()  # 加载数据

    def load_data(self):
        data = get_data()  # 调用获取数据的函数
        self.tableWidget.setRowCount(len(data))  # 设置表格的行数

        # 将数据填入表格
        for row_number, row_data in enumerate(data):
            for column_number, cell_data in enumerate(row_data):
                self.tableWidget.setItem(row_number, column_number, QtWidgets.QTableWidgetItem(str(cell_data)))

6. 完成并运行程序

现在,你可以通过运行 app.py 来查看你的程序,确保它能够成功连接数据库并显示用户信息了。

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

数据饼状图和关系图

为了增加一些可视化的信息,我们可以用 mermaid 语法来表示数据关系和图形。

数据饼状图示例

pie
    title 数据分布
    "Alice": 30
    "Bob": 25
    "Charlie": 35

关系图示例

erDiagram
    USERS {
        INTEGER id PK
        STRING name
        INTEGER age
    }

结论

至此,我们已经完成了从创建一个 SQLite 数据库,到使用 Qt Designer 设计界面,最后用 PyQt5 实现数据展示的全部过程。这个项目不仅能够帮助你了解如何处理数据库,还能让你熟悉图形化界面的开发。

继续探索和实践,这将进一步提升你在 Python 和 Qt 开发方面的能力。你可以尝试添加更多的功能,比如更新和删除记录,或者引入其他类型的数据库。扩展你的知识,将有助于你在开发领域的成长!