【问题标题】:Managing commands in a child frame Tkinter (Python)在子框架 Tkinter (Python) 中管理命令
【发布时间】:2015-08-21 20:38:59
【问题描述】:

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

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

【问题讨论】:

    标签: python tkinter command parent-child


    【解决方案1】:

    如果您需要该函数做不止一件事,只需制作一个普通函数而不是使用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()
    

    【讨论】:

    • 不知道为什么这被否决了。有人愿意解释它有什么问题吗?
    • 朋友,因为我不在乎得分。
    • @SDilmac:你是说你对这个问题投了反对票吗?
    • @BryanOakley 不,先生,我没有时间讨厌(重要的是发展和贡献)。我不知道得分。从这个站点,所以我利用了(我仍然在利用)。他是我的朋友,我将永远如此。如果我的朋友不高兴,那我很抱歉。
    猜你喜欢
    • 2021-05-20
    • 2015-03-23
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    相关资源
    最近更新 更多