2010-10-01 80 views
6

有了这个代码,窗外是500 500,这是我要为:为什么Tkinter框架在添加文本框时调整大小?

from tkinter import * 
root = Tk() 

frame = Frame(root, width=500, height=500) 

frame.pack() 
root.mainloop() 

当我添加一个文本框框架,但是,它收缩到文本的只是大小方框:

from tkinter import * 
root = Tk() 

frame = Frame(root, width=500, height=500) 

text = Text(frame, width=10, height=2) # THESE TWO 
text.pack()       # LINES HERE 

frame.pack() 
root.mainloop() 

为什么会发生这种情况,我该如何防止它发生?

回答

6

该框架默认情况下打开了“包传播”。这意味着打包者“计算出主机必须满足其从机需求的大小,并将主机的所需宽度和高度设置为这些尺寸”(引自官方的tcl/tk手册页[1] )。

对绝大多数情况来说,这是完全正确的行为。对于您不想要的时间,您可以在主设备上调用pack_propagate,并将该值设置为false。我想在tk编程近20年的时间里,我只需要做到这一点,如果是这样的话,就需要做到这一点。

您的另一个选择是使用wm_geometry在创建所有小部件后设置顶级的大小。这与用户手动调整窗口大小的效果相同。这只适用于上层窗口,但不能在框架上使用wm_geometry

+0

非常好,非常感谢! – Kiwi 2010-10-04 13:36:41

相关问题