sg.justification用法

在PySimpleGUI中,justification参数主要用于控制元素在水平方向上的对齐方式(左、中、右),适用于文本、输入框等元素及容器布局。以下是详细用法及示例:

1. 元素级别的对齐

  • Text元素:通过justification参数设置文本在元素内部的对齐方式,需配合size参数或expand_x=True以显示效果(当元素宽度大于文本长度时对齐生效)。

    sg.Text('Hello', justification='center', size=(20, 1))  # 文本居中
    sg.Text('Left', justification='left')  # 左对齐
    sg.Text('Right', justification='right')  # 右对齐
    
  • Input元素:输入框内容对齐方式(如数字、文本居右/左)。

    sg.Input(justification='right', size=(20, 1))  # 输入内容右对齐
    

2. 容器级别的对齐

  • Column容器:通过element_justification参数设置容器内所有子元素的默认水平对齐。

    column = sg.Column([
        [sg.Text('Item 1')],
        [sg.Text('Item 2')]
    ], element_justification='right')  # 容器内所有元素右对齐
    
  • Push元素:通过插入Push元素实现行内元素的左/中/右对齐:

    • 居中对齐:左右各加一个Push
      [sg.Push(), sg.Text('Centered'), sg.Push()]
      
    • 右对齐:左侧加Push
      [sg.Push(), sg.Button('Submit')]
      

3. 窗口级别的全局对齐

在创建窗口时,通过element_justification参数设置整个窗口内元素的默认对齐方式:

window = sg.Window('Title', layout, element_justification='center')  # 窗口内所有元素默认居中

4. 垂直对齐(与水平对齐区分)

垂直对齐使用vertical_alignment参数或辅助函数:

  • 垂直对齐辅助函数vtopvcentervbottom
    layout = [sg.vtop([sg.Text('Top'), sg.Listbox(...)])]  # 元素顶部对齐
    
  • 元素垂直对齐:部分元素支持vertical_alignment参数(如Textvertical_alignment='top')。

关键注意事项

  • 元素尺寸与对齐:当元素尺寸(如size)大于内容时,对齐效果明显;否则可能看不到变化。
  • 扩展方向:使用expand_x=True可使元素横向扩展以填充空间,增强对齐效果。
  • 容器嵌套:通过嵌套ColumnFrame可实现复杂布局的对齐控制。

示例代码

import PySimpleGUI as sg

layout = [
    [sg.Text('Name:', justification='right', size=(10,1)), 
     sg.Input(justification='left', size=(20,1))],
    [sg.Text('Age:', justification='right', size=(10,1)), 
     sg.Input(justification='center', size=(20,1))],
    [sg.Push(), sg.Button('Submit'), sg.Push()]  # 按钮居中
]

window = sg.Window('Demo', layout, element_justification='center')
while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break
window.close()

通过上述方法,可灵活控制PySimpleGUI中元素的对齐方式,实现美观的界面布局。

posted @ 2025-10-04 13:56  nxhujiee  阅读(6)  评论(0)    收藏  举报