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:使用 vtopvbottom 参数(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()

关键点说明:

  1. pad 参数格式:(水平间距, 垂直间距),例如 pad=(0, 10) 表示水平无间距,垂直间距10像素
  2. sg.Columnpad 参数会影响该列与其他元素的间距
  3. 窗口的 margins 参数控制整个窗口内容与边框的间距

这种方法可以精确控制每一行之间的垂直间距,同时保持代码的可读性。

posted @ 2025-10-16 08:46  nxhujiee  阅读(4)  评论(0)    收藏  举报