[英]Why does Tkinter frame resize when text box is added to it?
使用此代码,窗口是500乘500,这是我要的:
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()
为什么会发生这种情况,我该如何防止它发生?
默认情况下,框架已启用“包传播”。 这意味着封隔器“计算主机必须多大才能完全满足其从属设备的需求,并将主机所要求的宽度和高度设置为这些尺寸”(引自官方tcl / tk手册页[ 1 ] )。
对于绝大多数情况,这是完全正确的行为。 对于您不想要的时间,您可以在master上调用pack_propagate
并将值设置为false。 我认为在近20年的tk编程中,我只需要这样做六次左右,如果那样的话。
另一个选择是在创建所有小部件后使用wm_geometry
设置顶层的大小。 这实际上与用户手动调整窗口大小相同。 这仅适用于顶层窗口,但您不能在帧上使用wm_geometry
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.