Tk / ttk python中的帧大小调整问题

时间:2010-10-20 15:16:19

标签: python resize tkinter ttk

我正在使用Python 2.7中的Tkinter / ttk创建一个GUI,而我遇到的问题是,一旦将一个小部件置于其中,Frame将自行调整大小。我是Python新手,之前没有使用过Tkinter。

示例:

ROOT = Tk()
FRAME = ttk.Frame(ROOT, width=300, height=300, relief='groove')
FRAME.grid()
ROOT.mainloop()
如果我将小部件放在其中,

将生成一个带凹槽的框架300x300:

ROOT = Tk()
FRAME = ttk.Frame(ROOT, width=300, height=300, relief='groove')
BUTTON = ttk.Button(FRAME, text="DON'T READ THIS TEXT")
FRAME.grid()
BUTTON.grid()
ROOT.mainloop()  

框架将缩小以适合按钮。有什么方法可以强制框架不调整大小?

4 个答案:

答案 0 :(得分:6)

要强制框架保持其原始尺寸,请关闭“几何体传播”。在您的情况下,您可以致电FRAME.grid_propagate(False)

作为拥有超过15年Tk经验的人,我可能会建议您几乎肯定不需要此功能。 Tk“缩小到适合”的能力非常棒,并且可以很容易地创建具有适当调整大小行为的GUI。一旦你开始关闭几何传播,你会发现你的GUI会有不好的调整大小行为,或者你会花很多时间调整大小和小部件的位置。

答案 1 :(得分:1)

如果要添加填充,请使用widg.grid(ipadx=..., ipady=..., padx=..., pady=...)

否则,您需要在您尝试实现的布局上添加更多上下文

答案 2 :(得分:0)

这对我有用:

app = Application()
app.master.title('Example')
app.master.geometry('640x480')
app.mainloop()

Apllication在我的情况下是框架网格布局。它调整为主窗口的大小,因此我们需要更改主窗口的大小。

答案 3 :(得分:-1)

这应该可以胜任:ROOT.geometry("640x480")