sg.如何扩大行间距?
在 PySimpleGUI 中,要扩大窗口布局中各行之间的间距,可以通过以下几种方法实现:
方法1:使用 sg.Column
并设置 pad
参数
import PySimpleGUI as sg
layout = [
sg.Column([[sg.T('显示一行文本')]], pad=(0, 5)), # 底部添加5像素间距
sg.Column([[sg.T('输入'), sg.I('默认文本', size=27)]], pad=(0, 10)), # 底部添加10像素间距
sg.Column([[sg.B('OK', size=8), sg.B('Cancel', size=8), sg.B('Other', size=8)]], pad=(0, 0))
]
window = sg.Window('标题', layout, margins=(20, 10))
方法2:在每行元素中添加 sg.Push()
和 pad
layout = [
[sg.T('显示一行文本'), sg.Push()], # sg.Push() 会推开元素,但主要影响水平间距
[sg.T(' ' * 10)], # 添加空文本行(不推荐,不够优雅)
[sg.T('输入'), sg.I('默认文本', size=27)],
[sg.B('OK', size=8), sg.B('Cancel', size=8), sg.B('Other', size=8)]
]
# 更推荐的方式是结合 pad 参数
layout = [
[sg.T('显示一行文本', pad=(0, 5))], # 在元素本身添加pad
[sg.T('输入'), sg.I('默认文本', size=27), sg.Push()],
[sg.B('OK', size=8), sg.B('Cancel', size=8), sg.B('Other', size=8)]
]
方法3:使用 vtop
和 vbottom
参数(PySimpleGUI 4.30.0+)
layout = [
[sg.T('显示一行文本', pad=(0, 10), vertical_alignment='top')],
[sg.T('输入'), sg.I('默认文本', size=27)],
[sg.B('OK', size=8), sg.B('Cancel', size=8), sg.B('Other', size=8)]
]
最佳实践(推荐)
最清晰的方式是使用 sg.Column
为每一行包装,并通过 pad
参数控制间距:
import PySimpleGUI as sg
layout = [
[sg.Column([[sg.T('显示一行文本')]], pad=(0, 10))], # 行间距10像素
[sg.Column([[sg.T('输入'), sg.I('默认文本', size=27)]], pad=(0, 15))], # 行间距15像素
[sg.Column([[sg.B('OK', size=8), sg.B('Cancel', size=8), sg.B('Other', size=8)]], pad=(0, 0))]
]
window = sg.Window('标题', layout, margins=(20, 10))
event, values = window.read()
window.close()
关键点说明:
pad
参数格式:(水平间距, 垂直间距)
,例如pad=(0, 10)
表示水平无间距,垂直间距10像素sg.Column
的pad
参数会影响该列与其他元素的间距- 窗口的
margins
参数控制整个窗口内容与边框的间距
这种方法可以精确控制每一行之间的垂直间距,同时保持代码的可读性。