用python写一个在主界面按一下新增按钮,弹出新界面进行新增数据内容到数据库的代码
时间: 2023-06-08 10:06:49 浏览: 64
好的,以下是用 Python 实现在主界面按一下新增按钮,弹出新界面进行新增数据内容到数据库的代码:
```
import tkinter as tk
import sqlite3
class AddDataWindow:
def __init__(self, root, db):
self.top = tk.Toplevel(root)
self.top.title("新增数据")
self.top.geometry("300x200")
self.db = db
tk.Label(self.top, text="姓名:").grid(row=0, column=0, padx=10, pady=10)
self.name_entry = tk.Entry(self.top)
self.name_entry.grid(row=0, column=1, padx=10, pady=10)
tk.Label(self.top, text="年龄:").grid(row=1, column=0, padx=10, pady=10)
self.age_entry = tk.Entry(self.top)
self.age_entry.grid(row=1, column=1, padx=10, pady=10)
tk.Button(self.top, text="保存", command=self.save_data).grid(row=2, column=1, padx=10, pady=10)
def save_data(self):
name = self.name_entry.get()
age = self.age_entry.get()
cursor = self.db.cursor()
cursor.execute("INSERT INTO students (name, age) VALUES (?, ?)", (name, age))
self.db.commit()
self.top.destroy()
class MainWindow:
def __init__(self, root, db):
self.root = root
self.root.title("主界面")
self.root.geometry("300x200")
self.db = db
tk.Button(self.root, text="新增", command=self.add_data).pack(pady=10)
def add_data(self):
AddDataWindow(self.root, self.db)
if __name__ == "__main__":
db = sqlite3.connect("test.db")
cursor = db.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS students (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)")
root = tk.Tk()
MainWindow(root, db)
root.mainloop()
```
在这个代码中,我们使用了 tkinter 和 sqlite3 两个 Python 模块,分别实现了主界面和新增数据窗口的功能。
当我们在主界面点击新增按钮时,会弹出一个新的窗口,该窗口允许用户输入学生的姓名和年龄,并将这些数据保存到 SQLite 数据库中。新增数据窗口关闭后,主界面将重新显示。
由于需要使用 SQLite 数据库,我们需要先创建数据库和数据表。在这个例子中,我们在程序启动时创建了一个名为 test.db 的 SQLite 数据库,并在其中创建了一个名为 students 的数据表,用于存储学生的姓名和年龄。
这段代码中还有很多细节需要注意,比如使用 cursor 对象执行 SQL 语句时需要调用 commit 方法,否则数据不会被真正保存到数据库中。此外,我们还需要在新增数据窗口关闭时调用 Toplevel 对象的 destroy 方法来销毁该窗口。
除了这个例子以外,Python 还有很多关于 GUI 编程和数据库操作的工具和库可以使用,具体使用哪个工具和库要根据实际需求来进行选择。