2

我正在使用 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

4 回答 4

6

要强制框架保持其原始尺寸,请关闭“几何传播”。在你的情况下,你会打电话给FRAME.grid_propagate(False).

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

于 2010-10-20T17:10:38.047 回答
1

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

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

于 2010-10-20T15:46:40.583 回答
0

这对我有用:

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

在我的情况下,应用程序是带有网格布局的框架。它调整到主窗口的大小,所以我们需要改变主窗口的大小。

于 2017-10-20T11:44:54.377 回答
-1

这应该做的工作:ROOT.geometry("640x480")

于 2010-12-08T14:22:36.223 回答