Tk/ttk Python中框架调整大小问题

2 投票
4 回答
5566 浏览
提问于 2025-04-16 05:48

我正在用Python 2.7的Tkinter/ttk创建一个图形用户界面(GUI),遇到了一个问题,就是当我在一个框架(Frame)里放入一个组件(widget)时,这个框架会自动调整大小。我对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

这个对我来说有效:

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

在我的情况下,应用程序是一个框架,使用的是网格布局。它会根据主窗口的大小自动调整,所以我们需要改变主窗口的大小。

1

如果你想要添加内边距,可以使用 widg.grid(ipadx=..., ipady=..., padx=..., pady=...) 这个命令。

否则,你需要提供更多信息,说明你想要实现什么样的布局。

6

如果你想让窗口保持原来的大小,可以关闭“几何传播”这个功能。在你的情况下,你可以调用 FRAME.grid_propagate(False)

作为一个有超过15年Tk经验的人,我想说你几乎肯定不需要这个功能。Tk的“自动适应大小”功能非常棒,让你很容易创建具有良好调整大小行为的图形用户界面(GUI)。一旦你开始关闭几何传播,你会发现要么你的界面在调整大小时表现不好,要么你会花很多时间去调整大小和控件的位置。

撰写回答