窗口太小
问题描述:
下面是代码:窗口太小
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,但我不知道......为什么会发生这种情况?
答
正是这种小的,因为Tkinter的窗口在默认情况下“缩小以适合”。这就是所谓的几何传播,看起来你可能已经熟悉它了,因为你调用了grid_propagate
--尽管它没有实际做任何事情,也没有使用它返回的东西。
您的代码中实际存在两个问题。首先是您拨打f1.grid_propagate()
,但您使用pack
来安排小部件在f1
,因此您需要拨打f1.pack_propagate
来代替。其次,你需要传递一个False
的标志来实际关闭传播。这样做会阻止f1
缩小以适应其内容。
其次,你是不是在w1
转向传播了,所以它会缩小以适合其子。您需要致电w1.grid_propagate(False)
,或者您可以致电w1.wm_geometry("500x400")
请求窗口管理器将尺寸设置为该确切尺寸。
如果您只是在学习Tkinter,我建议您抵制关闭传播的冲动。在我几十年的tk编码中,我每隔几年就会使用一次该功能。 Tkinter的几何管理器是非凡的工具,您应该学会利用它们。而不是让容器控制它们的大小,让孩子们成为你想要的大小,GUI的其余部分将工作得很好。
答
您需要使用
f1.pack_propagate(0)
,使其不收缩