在子框架 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()
我正在使用以下函数从 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()