2013-05-01 68 views
0

我使用pack_forget()使按钮不可见。但是当我随后创建一个标签时,它会出现在不可见按钮的下方。我怎样才能避免这种位移?隐形按钮(使用pack_forget)仍占用空间

下面的代码示例演示了该问题:

from tkinter import * 

class Application(Frame): 
    def secondwidget(self): 
     self.b.pack_forget() 
     self.l = Label(text="Lowered Label :(") 
     self.l.pack() 

    def firstwidget(self): 
     self.b = Button(self) 
     self.b["text"] = "Button" 
     self.b["command"] = self.secondwidget 
     self.b.pack() 

    def __init__(self, master=None): 
     Frame.__init__(self, master) 
     self.pack() 
     self.firstwidget() 

root = Tk() 
app = Application(master=root) 
app.mainloop() 
root.destroy() 

编辑:我使用Python 3.2

回答

2

你忘了父母的标签:

self.l = Label(text="Lowered Label :(") 
print(self.l.winfo_parent() == str(self)) 
>>> False 

比较:

self.b = Button(self) 
print(self.b.winfo_parent() == str(self)) 
>>> True 
+0

我如何设置标签的父级? – 2013-05-01 19:34:27

+0

'Label(self,...)' - 第一个参数是新窗口小部件的父窗口。 'self.b = Button(self)' – kalgasnik 2013-05-01 19:37:45

+0

非常感谢! – 2013-05-01 19:44:11