在您的操作系统上,tkinter似乎
Tk在加载窗口小部件之前显示了基本窗口,从而导致了几毫秒的空白窗口。为了使其与所有已加载的小部件一起显示,您需要在启动时隐藏该窗口,并
.after在加载后再次显示该窗口。
有多种显示和隐藏窗口的方法,就我个人而言,我通常使用
.withdraw()从窗口管理器中删除窗口的方法(就像从未出现过的那样),然后
.deiconify()(基本上是“最小化”)再次显示该窗口。
class TEST(tk.Tk): def __init__(self,*args,**kw): tk.Tk.__init__(self,*args,**kw) self.withdraw() #hide the window self.after(0,self.deiconify) #as soon as possible (after app starts) show again #setup app...
完全退出窗口的另一种方法是最小化启动窗口,
.iconify()这样它将显示在任务栏/停靠栏上,但要等到窗口完全加载后才能打开窗口。
隐藏/显示窗口的另一种方法是通过更改
-alpha属性,就像@double_j所做的那样,但我不建议在生产代码中使用该窗口,因为从技术上讲该窗口仍在那儿,可以单击/
interacted来单击它(和关闭按钮等)。在显示可能是不希望有的内容之前,先进行了短暂的介绍,以及它的行为在操作系统之间可能是模棱两可的,请参见http://wiki.tcl.tk/9457:
Macintosh属性
-alpha双控制不透明度(从0.0到1.0)
…Unix / X11属性
-alpha双控制不透明度(从0.0到1.0)。
这需要合成窗口管理器才能起作用。[compiz]是这样的一种,而xfwm4(用于XFCE桌面)是另一种。
…Windows属性
-alpha两倍,整个窗口不透明; 请注意,在1.0和任何其他值之间更改可能会导致窗口闪烁 (Tk更改了用于实现顶层的窗口的类)。
因此,在某些unix机器上
-alpha可能没有效果,并且在Windows上可能会导致窗口闪烁(即使在打开之前,这可能不是问题,但仍然值得注意)
凡为
withdraw和
deiconify同样工作在所有平台上,据我所知。



