如何在tkinter中左对齐按钮 让SELECT、DELETE、MERGE按钮相邻排列
实现方法
出现按钮分散的核心原因是你没有给grid布局的列设置拉伸权重,所有列默认平分水平方向的多余空间,导致放置三个功能按钮的列被拉宽。你只需要给放置Close按钮的第3列设置权重,让多余的水平空间全部分配到这一列,左侧三列会自动收缩到刚好容纳按钮的宽度,三个按钮就会紧挨左对齐。
需要新增一行配置列权重的代码:
frame.grid_columnconfigure(3, weight=1)
修改后的完整可运行代码如下:
import tkinter as tk from tkinter import ttk root = tk.Tk() frame = ttk.Frame(root, padding=10) frame.grid() # 新增行:给第3列设置拉伸权重 frame.grid_columnconfigure(3, weight=1) # Browse tk.Text(frame, state="disabled", height=1).grid(column=0, row=0, columnspan=3, sticky="W", pady=5, ipadx=2, ipady=2) ttk.Button(frame, text="Browse", command=None).grid(column=3, row=0, sticky="E") # Selected files tk.Text(frame, state="disabled").grid(column=0, row=1, columnspan=4, sticky="EW", pady=10) # Options ttk.Button(frame, text="SELECT", command=None).grid(column=0, row=2, sticky="W") ttk.Button(frame, text="DELETE", command=None).grid(column=1, row=2, sticky="W") ttk.Button(frame, text="Merge", command=None).grid(column=2, row=2, sticky="W") ttk.Button(frame, text="Close", command=root.destroy).grid(column=3, row=2, sticky="E") root.mainloop()
原理解释
grid_columnconfigure(列索引, weight=数值) 是Tkinter中用来设置grid布局列拉伸优先级的方法:
- weight值为0的列,不会分配多余空间,宽度只会刚好适配列内的内容
- weight值越大,分配到的多余空间比例越高
这里我们将第3列的weight设为1,其余列默认是0,所有水平多余空间都会分配给放Close按钮的第3列,自然就实现了左侧三个按钮紧挨、右侧Close按钮靠右的效果。
内容的提问来源于stack exchange,提问作者user13041346
相关产品推荐
相关产品推荐

