我怀疑是什么
我为两个不同的代码提供了两个不同的输出,我相信它们正在做同样的事情。我在下面描述了两种情况。
我做了什么
我定义了以下__init__
def __init__(self):
self.window = Tk() ##The main window instance
self.window.title("STOPWATCH")
##Some fonts for use inside
self.small = Font(family='Helvetica',size=11)
self.medium = Font(family='Helvetica',size=15)
self.big = Font(family='Helvetica',size=24)
然后在类的函数中使用self.big
字体,如下所示:
def quitwin(self,event=None):
self.window.destroy()
self.window = Tk()
self.window.title('License and Credits')
self.frame =Frame(self.window)
self.frame.pack()
r = Frame(self.frame)
r.pack()
m = Message(r,text="Licensed under WTFPL license\
",font=self.big)
m.pack()
b = Button(r,text='QUIT',fg='red',bg='black',command=self.window.destroy,font=self.big)
b.pack(side='bottom')
输出:
http://i48.tinypic.com/k1p4dv.png
我更改了代码,以便在函数self.big
内定义quitwin
varioable,然后:
码
def quitwin(self,event=None):
self.window.destroy()
self.window = Tk()
self.window.title('License and Credits')
self.frame =Frame(self.window)
self.frame.pack()
r = Frame(self.frame)
r.pack()
self.big = Font(family='Helvetica',size=24)
m = Message(r,text="Licensed under WTFPL license\
",font=self.big)
m.pack()
b = Button(r,text='QUIT',fg='red',bg='black',command=self.window.destroy,font=self.big)
b.pack(side='bottom')
输出
http://i46.tinypic.com/10fcr6a.png
这个字体比我们之前看到的字体大得多。
这让我想知道这些是真正的24尺寸字体。虽然我确实想要第二个输出,但为什么我没有使用我先用过的代码获得相同的输出?
请帮我解决这个疑问。
答案 0 :(得分:2)
我的猜测与您创建多个Tk
实例的事实有关,而Tkinter的设计并非如此。可能是在第一种情况下,字体与原始Tk
对象绑定,当它被销毁时,字体被破坏或被垃圾收集。在第二种情况下,字体与对话框的Tk
相同的实例绑定,因此它是“实际大小为24的字体”。