Tkinter LabelFrame如何调整宽度?怎样使三个LabelFrame宽度一致?
Tkinter LabelFrame 等宽设置解决方案
你设置的width参数不生效,是因为Tkinter布局管理器默认开启了自动大小适配,容器会根据内部子组件的尺寸自动调整自身大小,同时你给LabelFrame设置的grid参数sticky没有横向拉伸属性,导致框架宽度只适配内容。可通过以下两种方法实现三个LabelFrame等宽:
方法1:自适应等宽(推荐)
不需要固定死宽度,让三个LabelFrame自动撑满主窗口第0列的全部可用宽度,自然保持等宽:
- 给主窗口的第0列设置拉伸权重,让列可以占满横向空间,在创建主窗口的代码后添加如下内容:
# 主窗口第0列设置权重1,允许横向拉伸 lastenheft_screen2.grid_columnconfigure(0, weight=1)
- 修改三个LabelFrame的grid参数,将sticky改为
ew(代表横向左右贴边,撑满单元格宽度):
# 原allgemeinedaten_frame.grid修改为 allgemeinedaten_frame.grid(row = 1, column = 0,sticky = "ew", padx = 10, pady = 10) # 原zeitlicheplanung_frame.grid修改为 zeitlicheplanung_frame.grid(row = 2, column = 0,sticky = "ew", padx = 10, pady = 10) # 原sonstiges_frame.grid修改为 sonstiges_frame.grid(row = 3, column = 0,sticky = "ew", padx = 10, pady = 10)
方法2:固定像素等宽
如果需要固定三个框架的宽度,直接统一设置相同width并关闭自动大小适配即可:
- 给三个LabelFrame设置相同的width值(单位为像素,示例取1200适配1400宽度的窗口):
allgemeinedaten_frame = LabelFrame(lastenheft_screen2, text = "Allgemeines: ", font = ('bold', 12), width=1200, pady = 10, padx = 10) zeitlicheplanung_frame = LabelFrame(lastenheft_screen2, text = "Zeitliche Grobplanung: ", font = ('bold', 12), width=1200, pady = 10, padx = 10) sonstiges_frame = LabelFrame(lastenheft_screen2, text = "Sonstiges: ", font = ('bold', 12), width=1200, pady = 10, padx = 10)
- 关闭三个LabelFrame的自动大小适配,禁止子组件改变框架尺寸:
allgemeinedaten_frame.grid_propagate(False) zeitlicheplanung_frame.grid_propagate(False) sonstiges_frame.grid_propagate(False)
内容的提问来源于stack exchange,提问作者Jkkp2owjd
相关产品推荐
相关产品推荐

