如何在Tkinter中使用Grid方法对齐Radio Buttons单选按钮
问题根因
你当前对齐异常是布局行列参数配置错误导致的,核心问题有两个:
- 所有组件都放在了同一列(
column=1),标签挤占了单选按钮的布局空间 - 两个单选按钮的起始行都设为了
row=2,且设置了冲突的rowspan参数,导致两个单选按钮在同一单元格内重叠挤压,sticky参数自然无法生效
修正方案
按以下逻辑调整grid布局参数即可:
- 拆分布局列:标签放在
column=0,两个单选按钮放在column=1 - 给单选按钮分配独立的行,去掉不必要的
rowspan配置 - 可选:给单选按钮所在列设置权重,保证
sticky="W"左对齐逻辑稳定生效
修正后的参考代码:
# 以下常量PURPLE、FONT、BACKGROUND沿用你之前的定义即可 mode_of_transportation = Label(text="Mode of transportation: ", fg=PURPLE, font=(FONT, 30, "bold"),bg=BACKGROUND) # 标签放在第0列第0行,跨2行适配高度 mode_of_transportation.grid(column=0,row=0, rowspan=2, sticky="W") # 给单选按钮所在的第1列设置权重,预留足够布局空间 mode_of_transportation.master.grid_columnconfigure(1, weight=1) r = IntVar() express = Radiobutton(text="Express(Grab,Uber,Taxi)",variable=r, value=0,width=20, font=(FONT, 18 , 'bold'), fg=PURPLE,bg=BACKGROUND, highlightthickness=0, activebackground=BACKGROUND ) # 第一个单选按钮放在第1列第0行,左对齐 express.grid(column=1,row=0,sticky="W") normal = Radiobutton(text="Normal(Jeep,Bus,UV,Tric)",variable=r, value=1,width=20, font=(FONT, 18 , 'bold'), fg=PURPLE,bg=BACKGROUND, highlightthickness=0, activebackground=BACKGROUND ) # 第二个单选按钮放在第1列第1行,左对齐 normal.grid(column=1,row=1, sticky="W")
内容的提问来源于stack exchange,提问作者Noahwaaa
相关产品推荐
相关产品推荐

