Tk/ttk Python中框架调整大小问题
我正在用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)。一旦你开始关闭几何传播,你会发现要么你的界面在调整大小时表现不好,要么你会花很多时间去调整大小和控件的位置。