2

问题

如何隐藏程序中弹出的两个 Tkinter 根窗口?我已经尝试使用root.widthdraw(). 这是我的 Pastebin 的链接。

背景

我正在尝试创建一个非常基本的电子邮件客户端,以了解有关 Tkinter 和 SMTP 的更多信息。我决定我的程序将首先创建一个顶级窗口,用户将在其中输入他们的凭据,如果服务器可以验证他们,那么程序将打开电子邮件发送对话框。令人讨厌的是,我无法隐藏程序启动时打开的另外两个根窗口。我试图用它root.widthdraw()来避免这个问题。

相关代码

#-----Authen is a toplevel class-------------

passcheck = Authen()

root = Tk()
root.mainloop()
root.widthdraw()
4

2 回答 2

2

您应该在创建任何其他窗口之前创建您的根窗口。否则你会得到你所观察到的结果:当你第一次创建其他小部件时,Tkinter 会自动创建一个根窗口,而你正在创建第二个小部件。

于 2013-04-14T01:21:43.340 回答
1

我正在使用默认tkinter包运行 Python2.7,而我的root对象没有withdraw()方法。除此之外,你也可以直接跑掉mainloop被叫toplevelpasscheck它会为你节省一个窗口。

class Authen(Frame):
    def __init__(self, master):
        Frame.__init__(self, master)

然后:

root = Tk()
passcheck = Authen(root) 
root.mainloop()

编辑:这是一个解决方案,而不是Authena TopLevel,而是 a ,并作为主人Frame传递。http://pastebin.com/TtnvU0erroot

于 2013-04-14T01:13:40.000 回答