在子框架 Tkinter 中管理命令 (Python)

Managing commands in a child frame Tkinter (Python)

我正在使用以下函数从 Tkinter 的菜单中打开输入对话框。

def show_entry_fields(e):
    global pwd 
    pwd = e.get()

def showPwdInputBox():
    # display an input box for the password
    c = Toplevel(root)
    c.title("Enter your password")
    c.geometry('200x160+230+130')
    Label(c, text="Password").pack() #(row=0)
    e1 = Entry(c, show="*")

    e1.pack()

    Button(c, text='OK', command= lambda: show_entry_fields(e1)).pack()
    Button(c, text='Close', command=c.destroy).pack()

我需要在用户按下确定时关闭对话框。我怎样才能做到这一点?

如果您需要函数做不止一件事,只需创建一个普通函数而不是使用 lambda:

def ok_command():
    show_entry_fields(e1)
    c.destroy()

Button(c, text='OK', command=ok_command).pack()

但是,我建议保存对每个小部件的单独引用,而不是链接您的几何管理,因为您无法引用已将其几何管理方法链接到它们的小部件。即使您不打算在这个特定的时间引用这些特定的小部件,培养也是一个很好的做法。

ok_button = Button(c, text='OK', command=ok_command)
ok_button.pack()