基于Tkinter的Python窗体程序,用于对SQLite数据库进行增删改查操作的示例

import tkinter as tk
import sqlite3

class Application(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master)
        self.master = master
        self.master.title("SQLite Demo")
        self.master.geometry("500x300")
        self.grid()
        self.create_widgets()

    def create_widgets(self):
        # 定义控件
        self.label1 = tk.Label(self, text="ID:")
        self.label2 = tk.Label(self, text="Name:")
        self.label3 = tk.Label(self, text="Age:")
        self.entry1 = tk.Entry(self)
        self.entry2 = tk.Entry(self)
        self.entry3 = tk.Entry(self)
        self.button1 = tk.Button(self, text="Add", command=self.add_record)
        self.button2 = tk.Button(self, text="Delete", command=self.delete_record)
        self.button3 = tk.Button(self, text="Update", command=self.update_record)
        self.button4 = tk.Button(self, text="Query", command=self.query_record)
        self.text1 = tk.Text(self, height=10, width=40)

        # 布局控件
        self.label1.grid(row=0, column=0, sticky=tk.W)
        self.entry1.grid(row=0, column=1, sticky=tk.W)
        self.label2.grid(row=1, column=0, sticky=tk.W)
        self.entry2.grid(row=1, column=1, sticky=tk.W)
        self.label3.grid(row=2, column=0, sticky=tk.W)
        self.entry3.grid(row=2, column=1, sticky=tk.W)
        self.button1.grid(row=3, column=0)
        self.button2.grid(row=3, column=1)
        self.button3.grid(row=3, column=2)
        self.button4.grid(row=3, column=3)
        self.text1.grid(row=4, column=0, columnspan=4)

    def add_record(self):
        # 获取输入数据
        id = self.entry1.get()
        name = self.entry2.get()
        age = self.entry3.get()

        # 连接数据库
        conn = sqlite3.connect("test.db")
        c = conn.cursor()

        # 执行插入语句
        c.execute("INSERT INTO test VALUES (?, ?, ?)", (id, name, age))

        # 提交事务
        conn.commit()

        # 关闭连接
        conn.close()

        # 清空输入框
        self.entry1.delete(0, tk.END)
        self.entry2.delete(0, tk.END)
        self.entry3.delete(0, tk.END)

    def delete_record(self):
        # 获取输入数据
        id = self.entry1.get()

        # 连接数据库
        conn = sqlite3.connect("test.db")
        c = conn.cursor()

        # 执行删除语句
        c.execute("DELETE FROM test WHERE id = ?", (id,))

        # 提交事务
        conn.commit()

        # 关闭连接
        conn.close()

        # 清空输入框
        self.entry1.delete(0, tk.END)
  
    def update_record(self):
        # 获取输入数据
        id = self.entry1.get()
        name = self.entry2.get()
        age = self.entry3.get()

        # 连接数据库
        conn = sqlite3.connect("test.db")
        c = conn.cursor()

        # 执行更新语句
        c.execute("UPDATE test SET name = ?, age = ? WHERE id = ?", (name, age, id))

        # 提交事务
        conn.commit()

        # 关闭连接
        conn.close()

        # 清空输入框
        self.entry1.delete(0, tk.END)
        self.entry2.delete(0, tk.END)
        self.entry3.delete(0, tk.END)

    def query_record(self):
        # 连接数据库
        conn = sqlite3.connect("test.db")
        c = conn.cursor()

        # 执行查询语句
        result = c.execute("SELECT * FROM test")

        # 输出查询结果
        self.text1.delete('1.0', tk.END)
        for row in result:
            self.text1.insert(tk.END, "ID: " + str(row[0]) + "\n")
            self.text1.insert(tk.END, "Name: " + str(row[1]) + "\n")
            self.text1.insert(tk.END, "Age: " + str(row[2]) + "\n")
            self.text1.insert(tk.END, "-----------------\n")

        # 关闭连接
        conn.close()
# 初始化数据库
def init_db():
    # 连接数据库
    conn = sqlite3.connect("test.db")
    c = conn.cursor()

    # 判断表是否存在
    c.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='test'")
    table_exists = c.fetchone() is not None

    if not table_exists:
        # 如果表不存在,则创建表
        c.execute("CREATE TABLE test (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)")

    # 提交事务
    conn.commit()

    # 关闭连接
    conn.close()

init_db()
root = tk.Tk()
app = Application(root)
root.mainloop() 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值