Python 特金特';s.pack_propagate()方法
我正在试验Tkinter,因为我想知道是否有一种方法可以在不使用画布的情况下设置Tkinter的窗口大小。我偶然发现了这个方法。所以我继续写了一个非常小的程序来显示一个文本标签来测试它。但是我发现它是“丢失的”,或者在我使用Python 特金特';s.pack_propagate()方法,python,tkinter,label,Python,Tkinter,Label,我正在试验Tkinter,因为我想知道是否有一种方法可以在不使用画布的情况下设置Tkinter的窗口大小。我偶然发现了这个方法。所以我继续写了一个非常小的程序来显示一个文本标签来测试它。但是我发现它是“丢失的”,或者在我使用frame.pack\u propagate(0) 所以我的问题是,你能解释一下为什么我在使用frame.pack(0)而不是frame.pack()方法时,文本框(标签)没有出现吗?第二,有没有办法不用画布来设置窗口大小?我想知道,因为在向我的朋友介绍canvas之前,我正
frame.pack\u propagate(0)
所以我的问题是,你能解释一下为什么我在使用frame.pack(0)
而不是frame.pack()
方法时,文本框(标签)没有出现吗?第二,有没有办法不用画布来设置窗口大小?我想知道,因为在向我的朋友介绍canvas之前,我正在编写一系列小程序来教他关于tkinter的知识。如果我的tkinter样本的窗口大小都相同,那就太好了。我也很好奇。多谢各位
我在MAC OS 10.5.8上使用的是python 3.2.2。
pack\u propagate
只设置了一个标志,它不会导致框架被放置在小部件中。它不能代替调用pack
换句话说,您必须这样做:
# put the frame in its parent
frame.pack()
# tell frame not to let its children control its size
frame.pack_propagate(0)
# put the textbox in the frame
textBox.pack()
回答你的第二个问题:是的,有一种方法 tkinters
Tk
确实具有Tk.geometry
功能。如果只调用它而不使用参数,则将以'widthxheight+x+y'
的形式获取当前几何体,例如(在Windows 10上)'200x200+26+26'
创建第一个Tk窗口时。使用该格式,您可以通过以下方式调整Tk的大小:root.geometry('400x500+60+60')
将宽度设置为400,高度设置为500,并将其放置在坐标(60 | 60)处
这适用于Tk
以及Toplevel
。但是Toplevel
在初始化或配置时也会采用参数的高度和宽度。如果您想让它们在打包时保持大小,只需对它们使用root.pack\u propagate(False)
顺便说一下,网格管理器也有类似的功能:root.grid\u propagate(False)
# put the frame in its parent
frame.pack()
# tell frame not to let its children control its size
frame.pack_propagate(0)
# put the textbox in the frame
textBox.pack()