2017-05-17 22 views
1

正如我从Tkinter参考中所理解的,临时子窗口在其父窗口绘制(居中?)。这适用于Linux而不适用于Windows(7)。Python 2.7/Windows 7/Tkinter:父中间临时子窗口

你有什么建议,为什么会发生这种情况?

我可以使用.geometry()方法手动将窗口居中,但是当GUI正在计算某些值(比如说第二次)时,会出现一个小窗口,它不会显示任何GUI,然后转到指定的即使在我调用.withdraw方法时也是如此。

非常感谢!

# -*- coding: utf-8 -*- 

import Tkinter as tk 
import ttk 

class Parent(tk.Tk): 

    def __init__(self, *args, **kwargs): 
     tk.Tk.__init__(self, *args, **kwargs) 
     self.txt = tk.Text(master=self) 
     self.txt.pack() 
     self.btn = ttk.Button(master=self, text='Show Child', 
           command=self.show) 
     self.btn.pack() 
     self.mainloop() 

    def show(self, *args): 
     Child(self) 


class Child(tk.Toplevel): 

    def __init__(self, master, *args, **kwargs): 
     tk.Toplevel.__init__(self, *args, **kwargs) 
     self.txt = tk.Text(master=self) 
     self.txt.pack() 

Parent() 

回答

0

好吧,我解决了这个方式如下:

  • .withdraw()窗口
  • 设置.geometry()父窗口
  • 中心多年来做了一些计算以获得所需的UI
  • .update_idletasks()
  • 终于.deiconify()窗口。