如何制作自生成按钮?
How can I make a self-generating button?
我正在尝试创建一个函数,该函数将在每次使用提交到数据库函数时创建一个以变量命名的按钮(提交到我的数据库的每个数据集都有一个按钮)。目前我可以让按钮自己命名,但每次使用它时我都无法抵消该行。我可以只添加一个简单的计数器并设置 row=n,但此时我不确定我解决问题的方法是最好的。对于每个数据集,都需要为其生成一个按钮。最好通过尝试 运行 一个基于我的数据集制作按钮的程序(不确定我会怎么做)或者让我提交 return 一个带有 row= 的按钮来解决这个问题柜台?还是有其他我没有想到的解决方案?
**注意:回过头来看,我的按钮在程序重新启动后不会保留,这是有道理的。如果我要使用 submit/counter 解决方案,我还必须在代码中创建数据存储本身。
**最小可重现代码:
from tkinter import *
root = Tk()
root.title('Button')
root.geometry('400x400')
f_name = Entry(root, width=30)
f_name.grid(row=0, column=1)
f_name_lbl = Label(root, text="First Name:")
f_name_lbl.grid(row=0, column=0)
def gen_button():
auto_button = Button(root, text=f_name.get())
auto_button.grid(row=2, column=0, columnspan=2)
submit_btn = Button(root, text="Submit:", command=gen_button).grid(row=1, column=0, columnspan=2, ipadx=100)
我相信我做对了,很抱歉我是 python 和堆栈溢出的新手
如果不指定行,grid
会自动选择上次占用行后的下一行。
auto_button.grid(column=0, columnspan=2)
不过,如果您为这些按钮创建一个单独的框架,您可以使用 pack
这会更容易一些,因为 pack
将小部件沿边对齐。在您的情况下,您希望它们与框架的顶部对齐,就在任何其他小部件的下方。
def gen_button():
auto_button = Button(button_frame, text=f_name.get())
auto_button.pack(side="top")
submit_btn = Button(root, text="Submit:", command=gen_button)
submit_btn.grid(row=1, column=0, columnspan=2, ipadx=100)
button_frame = Frame(root)
button_frame.grid(row=2, column=0, columnspan=2, sticky="nsew")
我正在尝试创建一个函数,该函数将在每次使用提交到数据库函数时创建一个以变量命名的按钮(提交到我的数据库的每个数据集都有一个按钮)。目前我可以让按钮自己命名,但每次使用它时我都无法抵消该行。我可以只添加一个简单的计数器并设置 row=n,但此时我不确定我解决问题的方法是最好的。对于每个数据集,都需要为其生成一个按钮。最好通过尝试 运行 一个基于我的数据集制作按钮的程序(不确定我会怎么做)或者让我提交 return 一个带有 row= 的按钮来解决这个问题柜台?还是有其他我没有想到的解决方案?
**注意:回过头来看,我的按钮在程序重新启动后不会保留,这是有道理的。如果我要使用 submit/counter 解决方案,我还必须在代码中创建数据存储本身。
**最小可重现代码:
from tkinter import *
root = Tk()
root.title('Button')
root.geometry('400x400')
f_name = Entry(root, width=30)
f_name.grid(row=0, column=1)
f_name_lbl = Label(root, text="First Name:")
f_name_lbl.grid(row=0, column=0)
def gen_button():
auto_button = Button(root, text=f_name.get())
auto_button.grid(row=2, column=0, columnspan=2)
submit_btn = Button(root, text="Submit:", command=gen_button).grid(row=1, column=0, columnspan=2, ipadx=100)
我相信我做对了,很抱歉我是 python 和堆栈溢出的新手
如果不指定行,grid
会自动选择上次占用行后的下一行。
auto_button.grid(column=0, columnspan=2)
不过,如果您为这些按钮创建一个单独的框架,您可以使用 pack
这会更容易一些,因为 pack
将小部件沿边对齐。在您的情况下,您希望它们与框架的顶部对齐,就在任何其他小部件的下方。
def gen_button():
auto_button = Button(button_frame, text=f_name.get())
auto_button.pack(side="top")
submit_btn = Button(root, text="Submit:", command=gen_button)
submit_btn.grid(row=1, column=0, columnspan=2, ipadx=100)
button_frame = Frame(root)
button_frame.grid(row=2, column=0, columnspan=2, sticky="nsew")