Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 特金特';s.pack_propagate()方法_Python_Tkinter_Label - Fatal编程技术网

Python 特金特';s.pack_propagate()方法

Python 特金特';s.pack_propagate()方法,python,tkinter,label,Python,Tkinter,Label,我正在试验Tkinter,因为我想知道是否有一种方法可以在不使用画布的情况下设置Tkinter的窗口大小。我偶然发现了这个方法。所以我继续写了一个非常小的程序来显示一个文本标签来测试它。但是我发现它是“丢失的”,或者在我使用frame.pack\u propagate(0) 所以我的问题是,你能解释一下为什么我在使用frame.pack(0)而不是frame.pack()方法时,文本框(标签)没有出现吗?第二,有没有办法不用画布来设置窗口大小?我想知道,因为在向我的朋友介绍canvas之前,我正

我正在试验Tkinter,因为我想知道是否有一种方法可以在不使用画布的情况下设置Tkinter的窗口大小。我偶然发现了这个方法。所以我继续写了一个非常小的程序来显示一个文本标签来测试它。但是我发现它是“丢失的”,或者在我使用
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()