以下是代码:
from Tkinter import *
def main():
w1 = Tk()
w1["height"] = 400;
w1["width"] = 500;
w1.title("Gui")
f1 = Frame(w1)
f1.grid_propagate()
f1["height"] = w1["height"];
f1["width"] = w1["width"];
f1.pack()
p1 = Button(f1)
p1["borderwidth"] = 6
p1["text"] = "esci"
p1["background"] = "red"
p1["command"] = f1.quit
p1.pack()
w1.mainloop()
main()
我已经给w1
和f1
(窗口和框架)一个500x400的尺寸,但是会出现一个太小的窗口:它太小了,我会说200x100,但我不知道。 ..为什么会这样?
答案 0 :(得分:1)
您需要使用
f1.pack_propagate(0)
这样它就不会缩小
答案 1 :(得分:1)
这很小,因为默认情况下tkinter窗口“缩小到适合”。这称为几何传播,看起来你可能已经熟悉了它,因为你调用了grid_propagate
- 但是,它没有实际执行任何操作而没有使用它返回的内容。
您的代码实际上存在两个问题。首先是您致电f1.grid_propagate()
,但是您使用pack
来安排f1
中的小部件,因此您需要拨打f1.pack_propagate
。其次,您需要传递False
的标志才能实际关闭传播。这样做可以防止f1
缩小以适应其内容。
其次,你不会在w1
上关闭传播,所以它会缩小以适应它的孩子。您需要调用w1.grid_propagate(False)
,或者您可以调用w1.wm_geometry("500x400")
来请求窗口管理器将大小设置为该确切维度。
如果您只是在学习Tkinter,我建议您抵制将传播关闭的冲动。在我用了几十年的编码时间里,我每隔几年就会使用一次这个功能。 Tkinter的几何管理器是非凡的工具,你应该学会利用它们。不要让容器控制它们的大小,让孩子们成为你想要的大小,GUI的其余部分也可以正常工作。