python带中文图形化界面的简单键值数据库

这段代码实现了一个简单的键值数据库应用程序,并提供了一个图形化用户界面(GUI)来操作这个数据库。以下是详细的注释和功能说明:

功能说明

  1. 设置键值对:用户可以输入一个键和一个值,然后点击“设置”按钮将它们存储在数据库中。
  2. 获取键对应的值:用户可以输入一个键,然后点击“获取”按钮查看该键对应的值。
  3. 删除键值对:用户可以输入一个键,然后点击“删除”按钮从数据库中移除该键及其对应的值。
  4. 更新键对应的值:用户可以输入一个键和一个新的值,然后点击“更新”按钮更改该键的值。
  5. 显示所有键值对:用户可以点击“显示全部”按钮查看数据库中所有的键值对。

技术使用

  • Tkinter:这是一个标准的Python库,用于创建图形用户界面。它提供了各种小部件(如标签、输入框、按钮等),可以帮助我们构建用户友好的界面。
  • 消息框tkinter.messagebox模块用于显示信息、警告和错误消息框,以通知用户操作的结果或错误信息。

详细代码

import tkinter as tk
from tkinter import messagebox

class KeyValueDatabase:
    def __init__(self):
        # 初始化数据存储为字典
        self.data = {}

    def set(self, key, value):
        """设置键值对"""
        # 将键值对存入字典
        self.data[key] = value

    def get(self, key):
        """获取键对应的值"""
        # 返回键对应的值,如果不存在则返回None
        return self.data.get(key, None)

    def delete(self, key):
        """删除键值对"""
        # 如果键存在,则从字典中删除该键值对
        if key in self.data:
            del self.data[key]

    def update(self, key, value):
        """更新键对应的值"""
        # 如果键存在,则更新其对应的值
        if key in self.data:
            self.data[key] = value

    def display(self):
        """显示所有键值对"""
        # 返回所有键值对的字符串表示形式
        return "\n".join([f"{key}: {value}" for key, value in self.data.items()])

class KeyValueApp:
    def __init__(self, root, db):
        self.root = root
        self.db = db
        self.root.title("键值数据库")

        # 创建并放置控件
        self.create_widgets()

    def create_widgets(self):
        # 输入框和标签
        tk.Label(self.root, text="键:").grid(row=0, column=0, padx=10, pady=5)
        self.key_entry = tk.Entry(self.root)
        self.key_entry.grid(row=0, column=1, padx=10, pady=5)

        tk.Label(self.root, text="值:").grid(row=1, column=0, padx=10, pady=5)
        self.value_entry = tk.Entry(self.root)
        self.value_entry.grid(row=1, column=1, padx=10, pady=5)

        # 按钮
        tk.Button(self.root, text="设置", command=self.set_key_value).grid(row=2, column=0, padx=10, pady=5)
        tk.Button(self.root, text="获取", command=self.get_key_value).grid(row=2, column=1, padx=10, pady=5)
        tk.Button(self.root, text="删除", command=self.delete_key).grid(row=3, column=0, padx=10, pady=5)
        tk.Button(self.root, text="更新", command=self.update_key_value).grid(row=3, column=1, padx=10, pady=5)
        tk.Button(self.root, text="显示全部", command=self.display_all).grid(row=4, columnspan=2, padx=10, pady=5)

        # 显示区域
        self.result_text = tk.Text(self.root, height=10, width=40)
        self.result_text.grid(row=5, columnspan=2, padx=10, pady=5)

    def set_key_value(self):
        key = self.key_entry.get()
        value = self.value_entry.get()
        if key and value:
            self.db.set(key, value)
            messagebox.showinfo("成功", f"已将{key}设置为{value}")
        else:
            messagebox.showwarning("输入错误", "键和值都必须提供。")

    def get_key_value(self):
        key = self.key_entry.get()
        if key:
            value = self.db.get(key)
            if value is not None:
                self.result_text.insert(tk.END, f"{key}的值: {value}\n")
            else:
                messagebox.showinfo("信息", f"未找到键{key}的条目。")
        else:
            messagebox.showwarning("输入错误", "键必须提供。")

    def delete_key(self):
        key = self.key_entry.get()
        if key:
            if key in self.db.data:
                self.db.delete(key)
                messagebox.showinfo("成功", f"已删除{key}。")
            else:
                messagebox.showinfo("信息", f"未找到键{key}的条目。")
        else:
            messagebox.showwarning("输入错误", "键必须提供。")

    def update_key_value(self):
        key = self.key_entry.get()
        value = self.value_entry.get()
        if key and value:
            if key in self.db.data:
                self.db.update(key, value)
                messagebox.showinfo("成功", f"已将{key}更新为{value}。")
            else:
                messagebox.showinfo("信息", f"未找到键{key}的条目。")
        else:
            messagebox.showwarning("输入错误", "键和值都必须提供。")

    def display_all(self):
        all_entries = self.db.display()
        self.result_text.delete(1.0, tk.END)
        self.result_text.insert(tk.END, all_entries)

if __name__ == "__main__":
    root = tk.Tk()
    db = KeyValueDatabase()
    app = KeyValueApp(root, db)
    root.mainloop()




效果图

在这里插入图片描述

代码解释

  1. KeyValueDatabase 类

    • __init__: 初始化一个空字典来存储键值对。
    • set: 设置键值对。
    • get: 获取键对应的值。
    • delete: 删除键值对。
    • update: 更新键对应的值。
    • display: 返回所有键值对的字符串表示形式。
  2. KeyValueApp 类

    • __init__: 初始化主窗口和数据库实例,并调用 create_widgets 方法创建界面组件。
    • create_widgets: 创建并放置所有必要的界面组件,包括标签、输入框、按钮和文本区域。
    • set_key_value: 从输入框获取键和值,并将其存储到数据库中;显示成功的消息框。
    • get_key_value: 从输入框获取键,并尝试从数据库中获取对应的值;将结果插入到文本区域或显示消息框。
    • delete_key: 从输入框获取键,并从数据库中删除该键值对;显示成功的消息框。
    • update_key_value: 从输入框获取键和新的值,并更新数据库中的对应值;显示成功的消息框。
    • display_all: 获取数据库中所有键值对的字符串表示形式,并插入到文本区域。
  3. 主程序

    • 创建 Tkinter 主窗口实例。
    • 创建 KeyValueDatabase 实例。
    • 创建 KeyValueApp 实例并将主窗口和数据库实例传递给它。
    • 进入 Tkinter 的主事件循环,等待用户交互。

你可以运行这段代码并在 Tkinter 窗口中进行测试,以体验这个简单的键值数据库应用程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编织幻境的妖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值