CustomTkinter:如何用place()实现Frame随窗口动态调整大小
用place()实现CTkFrame随窗口自适应调整
你用place()布局时没配置尺寸相关的相对参数,再加上给Frame固定了宽高,所以窗口拉伸时它不会跟着变化。改两处就能解决:
- 删掉CTkFrame的
width=800和height=600(如果想保留窗口最小尺寸,给主窗口设置minsize即可) - 在
place()方法里添加relwidth=1和relheight=1,让Frame的尺寸占满父容器(主窗口)的100%
修改后的核心代码:
bgFrame = customtk.CTkFrame(app, fg_color="white") bgFrame.place(relx=0.5, rely=0.5, anchor="center", relwidth=1, relheight=1)
如果想限制窗口不能小于初始的800x600,给主窗口加一行设置:
app.minsize(width=800, height=600)
另外,Frame内部的组件也要用相对布局才能跟着自适应。比如在Frame里放一个按钮,让它占Frame宽度的80%、高度的20%且居中:
btn = customtk.CTkButton(bgFrame, text="测试按钮") btn.place(relx=0.5, rely=0.5, anchor="center", relwidth=0.8, relheight=0.2)
这样调整窗口大小时,Frame和内部组件都会自动适配新尺寸。
内容的提问来源于stack exchange,提问作者AjaXI
相关产品推荐
相关产品推荐

