python - 如何在 tkinter 中永久添加按钮?

python tkinter 中是否有一种方法可以在您向页面添加按钮时永久执行此操作,即使您停止并再次运行程序也是如此?就像您要将按钮添加到数据库一样。我不知道是否有办法将小部件放入 sql table ...

回答1

您不能 store tkinter 数据库中的对象。解决方案是将信息添加到文件或数据库中,以便您在启动应用程序时重新创建按钮。例如,您可以将按钮标签保存到数据库中的一行,并在启动时读取这些行并为每一行创建一个按钮。

这是一个完整的程序来说明这个过程。请注意,每次创建按钮时,都会从条目小部件中检索文本并将其添加到数据库中。在启动时,代码将查询数据库并重新创建按钮。

import tkinter as tk
import sqlite3

def init_db():
    global db
    db = sqlite3.connect("buttons.sqlite")
    cursor = db.cursor()
    cursor.execute("CREATE TABLE IF NOT EXISTS buttons (id INTEGER PRIMARY KEY AUTOINCREMENT, label VARCHAR)")

def add_button():
    button_text = entry.get() or "Button"
    entry.delete(0, "end")

    create_button(button_text)
    save_button(button_text)

def save_button(button_text):
    cursor = db.cursor()
    cursor.execute("INSERT INTO buttons(label) VALUES(?)", (button_text,))
    db.commit()

def create_button(button_text):
    button = tk.Button(root, text=button_text)
    button.pack(side="top")

def restore_buttons():
    cursor = db.cursor()
    cursor.execute("SELECT id, label from buttons")
    for (row_id, button_text) in cursor.fetchall():
        create_button(button_text)

root = tk.Tk()
toolbar = tk.Frame(root)
toolbar.pack(side="bottom", fill="x")

button = tk.Button(toolbar, text="Add Button", command=add_button)
entry = tk.Entry(toolbar)

entry.pack(side="left")
button.pack(side="left")

init_db()
restore_buttons()

root.mainloop()

相似文章

python - 如何获取数组中的 values

我试图返回数组vars中的values,但我只是把它拿回来。我很新,所以请有人能解释一下这些values是什么广告,为什么它们没有为检查按钮的状态返回1或0?[<tkinter.IntVarobjec...

python - 使用 tkinter 输入

我正在尝试输入要在API调用应用程序中使用的变量。当我使用普通的pythoninput东西时,它可以工作,但我希望能够通过带有tkinter的条目小部件输入这些内容。当我尝试使用tkinter条目小部...