如何通过Frame设置固定窗口大小,避免内部组件影响Frame尺寸
解决方案
出现该现象的原因是tkinter容器组件默认开启了尺寸传播特性:只要容器内存在子组件,手动设置的width/height参数会被自动计算的子组件适配尺寸覆盖,要实现Frame固定尺寸不受内部组件影响,只需关闭对应布局的尺寸传播即可。
你当前代码中Frame内部使用pack布局放置子组件,只要在Frame配置尺寸后添加一行pack_propagate(False)即可:
import tkinter from tkinter import ttk root = tkinter.Tk() s = ttk.Style() s.configure('Login.TFrame', background='red') login = ttk.Frame(root, style='Login.TFrame') login.config(width=640, height=360) # 关闭pack布局的尺寸传播,Frame固定使用手动设置的宽高 login.pack_propagate(False) ttk.Button(login, text="Login").pack() login.pack(expand=True, fill=tkinter.BOTH) root.mainloop()
补充说明
- 如果你后续改用
grid布局放置Frame内部的子组件,把上面的pack_propagate(False)替换为grid_propagate(False)即可 - 关闭尺寸传播后,如果内部组件的尺寸超过Frame的设定值,超出部分会被直接裁切,不会撑开Frame
内容的提问来源于stack exchange,提问作者yui amanda
相关产品推荐
相关产品推荐

