Tkinter中Frame添加组件后尺寸异常变化的问题求助
问题解决:Tkinter Frame添加组件后尺寸异常变化
问题根源
Tkinter容器组件(如Frame)默认开启尺寸自适应(grid_propagate(True)),当向其中添加子组件时,容器会自动调整自身尺寸以容纳所有子组件,哪怕手动设置了width和height也会被覆盖,这就是你遇到的尺寸异常变化的原因。
解决方案
禁用Frame的尺寸自适应功能即可,具体有两种修改方式:
方式1:在Eframe类中直接配置
修改Eframe的EframeGen方法,添加禁用自适应的代码:
def EframeGen(self): theme = th.FrameTheme self.configure(background=theme["bg"][0]) self.configure(highlightbackground="gray28") self.configure(highlightthickness=3) self.configure(height=self.height) self.configure(width=self.width) # 禁用grid布局的尺寸自适应 self.grid_propagate(False)
方式2:创建MainFrame后配置
在frameFile方法中,创建MainFrame后添加禁用代码:
self.MainFrame = Eframe(self.engine.FrameOperation, self.height, self.width) self.widget.append(self.MainFrame) self.MainFrame.pack(pady=(20, 10), padx=30) # 禁用尺寸自适应 self.MainFrame.grid_propagate(False)
额外说明
- 如果后续改用
pack布局添加子组件,需要对应使用self.pack_propagate(False) - 禁用自适应后,Frame会严格保持设置的尺寸,若子组件超出范围会被裁剪,可通过
grid的sticky参数(如sticky="nsew")控制子组件在Frame内的拉伸填充逻辑
内容的提问来源于stack exchange,提问作者Rebagliati Loris
相关产品推荐
相关产品推荐

