如何将PySimpleGUI按钮列表均匀拆分为三行?
解决PySimpleGUI中14个按钮三行均匀布局的问题
要实现14个学员按钮均匀分布在三行,核心是利用PySimpleGUI的嵌套列表布局规则:每个子列表对应界面中的一行,列表内的元素是该行的控件。
问题根源
如果你的代码把所有按钮放在同一个列表里(如下示例),所有按钮会被挤在同一行,导致堆叠:
# 错误的布局方式(按钮堆叠) layout = [ [sg.Button(f"学员{i}") for i in range(1, 15)] ]
解决方案
把14个按钮拆分为三个子列表,按5个 + 5个 + 4个的方式分配到三行(14=5+5+4),同时可以通过设置按钮参数让每行的按钮宽度均匀适配:
import PySimpleGUI as sg # 创建14个学员按钮,开启自适应宽度,同时设置基础尺寸 button_list = [sg.Button(f"学员{i+1}", expand_x=True, size=(10, 2)) for i in range(14)] # 拆分按钮为三行,分别对应不同数量的按钮 layout = [ button_list[:5], # 第一行:前5个按钮 button_list[5:10], # 第二行:第6-10个按钮 button_list[10:] # 第三行:剩余4个按钮 ] # 创建窗口,允许调整大小以适配布局 window = sg.Window("学员队数据库菜单", layout, resizable=True) # 事件循环 while True: event, values = window.read() if event == sg.WIN_CLOSED: break # 这里可以添加按钮点击后的业务逻辑,比如跳转对应学员的数据库操作 print(f"触发操作:{event}") window.close()
关键细节说明
expand_x=True:让每个按钮自动填充所在行的可用宽度,保证同一行的按钮宽度一致size=(10,2):设置按钮的基础尺寸,避免窗口过小时按钮显示不全resizable=True:允许用户调整窗口大小,按钮会随窗口宽度自动适配
内容的提问来源于stack exchange,提问作者Cassidy Mettraux
相关产品推荐
相关产品推荐

