窗口太小

问题描述:

下面是代码:窗口太小

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() 

我已经给w1f1(窗口和框架)一个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) 

,使其不收缩