如何创建一个自生成按钮?



我试图创建一个函数,每次使用提交到数据库函数时都会创建一个以变量命名的按钮(提交到数据库的每个数据集1个按钮)。目前,我可以让按钮自己命名,但每次使用它时,我都会遇到麻烦。我可以添加一个简单的计数器并设置row=n,但在这一点上,我不确定我的方法是否是最好的。对于每个数据集,都需要为它生成一个按钮。最好的方法是尝试运行一个基于我的数据集制作按钮的程序(不确定我该怎么做),或者让我的提交返回一个row=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")

相关内容

最新更新