Tkinter使用grid布局实现label标签拉伸占满屏幕宽度的问题
问题原因
你当前Demographic页面的grid布局存在两个核心问题:
- 没有给Frame的grid列配置拉伸权重,窗口宽度变化时列不会自动适配填充
- 顶部header标签的grid参数没有设置水平填充属性,也不应该从非0的行/列起始放置,会导致左上角出现空白间隙
解决方法
直接修改Demographic类的代码即可,修改后的完整类代码如下:
class Demographic(tk.Frame): def __init__(self, parent, controller): tk.Frame.__init__(self, parent, bg="white") self.controller = controller self.controller.title("program") self.controller.state("zoomed") # 配置grid布局第0列权重为1,让列自动拉伸占满水平空间 self.grid_columnconfigure(0, weight=1) # 顶部header放在第0行第0列,设置sticky='ew'实现水平全宽填充 headingLabel1 = tk.Label(self, text="program page 2", padx=0, pady=20, fg="black", bg="green") headingLabel1.grid(row=0, column=0, sticky="ew") # 下方表单部分继续用grid布局即可,你可以根据需要配置多列权重 name_selection = Label(self, text="\n1. Name:\n", padx=10, pady=5, fg="black", bg="white") name_selection.grid(row=1, column=0, sticky="w") # 如果后续需要多列表单,可自行配置多列权重,例如两列布局: # self.grid_columnconfigure(0, weight=1) # self.grid_columnconfigure(1, weight=1) # 对应组件放在不同column即可
效果验证
修改后运行代码,人口统计页面的顶部绿色横幅会和欢迎页完全一致,自适应窗口全宽,下方的表单区域依然使用grid布局,你可以按照需求继续添加出生日期、职业等其他表单组件。
内容的提问来源于stack exchange,提问作者user1249891235907
相关产品推荐
相关产品推荐

