在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
参数或辅助函数:
- 垂直对齐辅助函数:
vtop
、vcenter
、vbottom
layout = [sg.vtop([sg.Text('Top'), sg.Listbox(...)])] # 元素顶部对齐
- 元素垂直对齐:部分元素支持
vertical_alignment
参数(如Text
的vertical_alignment='top'
)。
关键注意事项
- 元素尺寸与对齐:当元素尺寸(如
size
)大于内容时,对齐效果明显;否则可能看不到变化。 - 扩展方向:使用
expand_x=True
可使元素横向扩展以填充空间,增强对齐效果。 - 容器嵌套:通过嵌套
Column
或Frame
可实现复杂布局的对齐控制。
示例代码
import PySimpleGUI as sglayout = [[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中元素的对齐方式,实现美观的界面布局。