以下是基于PySimpleGUI 4.60.5版本的控件函数用法演示示例整理,按功能分类并编号说明:
一、基础控件
-
Text(文本显示)
import PySimpleGUI as sg layout = [[sg.Text('欢迎使用PySimpleGUI', key='-TEXT-', font=('Arial', 14))]] window = sg.Window('文本示例', layout) window.read() window.close()
- 参数说明:
key
为控件唯一标识,font
设置字体样式。
- 参数说明:
-
Input(单行输入框)
layout = [[sg.Text('用户名:'), sg.Input(key='-USERNAME-', size=(20,1))]] window = sg.Window('输入框示例', layout) event, values = window.read() print(f"输入内容:{values['-USERNAME-']}") window.close()
- 参数说明:
size
控制输入框宽度,values
字典存储输入值。
- 参数说明:
-
Button(按钮)
layout = [[sg.Input(key='-INPUT-')], [sg.Button('提交', key='-SUBMIT-'), sg.Button('退出')]] window = sg.Window('按钮示例', layout) while True:event, values = window.read()if event in (None, '退出'): breakif event == '-SUBMIT-': sg.popup(f"输入内容:{values['-INPUT-']}") window.close()
- 事件处理:通过
event
判断按钮点击事件。
- 事件处理:通过
二、选择类控件
-
Checkbox(复选框)
layout = [[sg.Checkbox('记住密码', key='-REMEMBER-', default=True)]] window = sg.Window('复选框示例', layout) event, values = window.read() print(f"是否勾选:{values['-REMEMBER-']}") window.close()
- 参数说明:
default
设置初始选中状态。
- 参数说明:
-
Radio(单选按钮组)
layout = [[sg.Text('性别:')],[sg.Radio('男', 'GENDER', key='-MALE-'), sg.Radio('女', 'GENDER', key='-FEMALE-')]] window = sg.Window('单选示例', layout) event, values = window.read() print(f"选择性别:{'男' if values['-MALE-'] else '女'}") window.close()
- 参数说明:
'GENDER'
为单选组标识,确保互斥选择。
- 参数说明:
-
Combo(下拉选择框)
layout = [[sg.Text('城市:'), sg.Combo(['北京', '上海', '广州'], key='-CITY-', default_value='北京')]] window = sg.Window('下拉框示例', layout) event, values = window.read() print(f"选择城市:{values['-CITY-']}") window.close()
- 参数说明:
default_value
设置默认选项。
- 参数说明:
三、高级控件
-
Listbox(列表选择框)
data = ['苹果', '香蕉', '橙子'] layout = [[sg.Listbox(data, size=(10,3), key='-FRUITS-')],[sg.Button('确认'), sg.Button('退出')]] window = sg.Window('列表框示例', layout) while True:event, values = window.read()if event in (None, '退出'): breakif event == '确认':selected = values['-FRUITS-'][0] # 返回选中项的列表sg.popup(f"选择水果:{selected}") window.close()
-
Slider(滑动条)
layout = [[sg.Text('音量调节:')],[sg.Slider(range=(0, 100), default_value=50, orientation='h', key='-VOLUME-')]] window = sg.Window('滑动条示例', layout) event, values = window.read() print(f"当前音量:{values['-VOLUME-']}") window.close()
- 参数说明:
orientation
控制方向('h'
水平,'v'
垂直)。
- 参数说明:
-
Multiline(多行文本框)
layout = [[sg.Multiline('初始文本\n第二行', size=(30,5), key='-OUTPUT-')],[sg.Button('清空')]] window = sg.Window('多行文本示例', layout) while True:event, values = window.read()if event in (None, sg.WIN_CLOSED): breakif event == '清空': window['-OUTPUT-'].update('') # 清空内容 window.close()
四、文件与目录操作
-
FileBrowse(文件选择器)
layout = [[sg.Text('选择文件:'), sg.Input(key='-FILE-'), sg.FileBrowse()]] window = sg.Window('文件选择示例', layout) event, values = window.read() print(f"文件路径:{values['-FILE-']}") window.close()
-
FolderBrowse(文件夹选择器)
layout = [[sg.Text('选择文件夹:'), sg.Input(key='-FOLDER-'), sg.FolderBrowse()]] window = sg.Window('文件夹选择示例', layout) event, values = window.read() print(f"文件夹路径:{values['-FOLDER-']}") window.close()
五、容器与布局
-
Frame(分组容器)
frame_layout = [[sg.Text('姓名:'), sg.Input(key='-NAME-')],[sg.Text('年龄:'), sg.Input(key='-AGE-')]] layout = [[sg.Frame('用户信息', frame_layout)]] window = sg.Window('分组容器示例', layout) window.read() window.close()
-
Tab(标签页)
tab1_layout = [[sg.Text('标签页1内容')]] tab2_layout = [[sg.Text('标签页2内容')]] layout = [[sg.TabGroup([[sg.Tab('页面1', tab1_layout), sg.Tab('页面2', tab2_layout)]])]] window = sg.Window('标签页示例', layout) window.read() window.close()
六、弹出窗口
-
Popup(快捷弹窗)
sg.popup('操作成功!', title='提示', icon=sg.SYSTEM_TRAY_MESSAGE_ICON_INFORMATION)
- 参数说明:
title
设置标题,icon
可选系统图标类型。
- 参数说明:
-
PopupGetFile(文件选择弹窗)
file_path = sg.popup_get_file('请选择文件', title='文件选择') print(f"选中文件:{file_path}")
七、图形与图像
-
Image(图片显示)
layout = [[sg.Image('logo.png', key='-IMAGE-')]] # 仅支持PNG/GIF格式 window = sg.Window('图片示例', layout) window.read() window.close()
-
Canvas(自定义绘图区)
import matplotlib.pyplot as plt from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg import numpy as npfig, ax = plt.subplots() ax.plot(np.random.rand(10)) canvas_agg = FigureCanvasTkAgg(fig, master=sg.tk.create_tkinter_widget()) layout = [[sg.Canvas(key='-CANVAS-', size=(400, 300))]] window = sg.Window('绘图示例', layout, finalize=True) canvas_agg.get_tk_widget().pack() window.read() window.close()
- 说明:需结合Matplotlib实现复杂绘图。
八、状态与进度
-
ProgressBar(进度条)
layout = [[sg.ProgressBar(100, orientation='h', size=(20, 20), key='-PROGRESS-')],[sg.Button('开始')]] window = sg.Window('进度条示例', layout) progress_bar = window['-PROGRESS-'] for i in range(101):window.read(timeout=10)progress_bar.update(i) window.close()
-
StatusBar(状态栏)
layout = [[sg.Input(key='-INPUT-')], [sg.StatusBar('就绪', key='-STATUS-')]] window = sg.Window('状态栏示例', layout) while True:event, values = window.read()if event in (None, sg.WIN_CLOSED): breakwindow['-STATUS-'].update('处理中...') # 更新状态文本 window.close()
九、菜单栏
- Menu(顶部菜单)
menu_def = [['文件', ['打开', '保存', '退出']], ['帮助', '关于...']] layout = [[sg.Menu(menu_def)]] window = sg.Window('菜单示例', layout) while True:event, values = window.read()if event == '退出' or event == sg.WIN_CLOSED: breakif event == '打开': sg.popup('打开文件功能待实现') window.close()
关键注意事项
- 版本兼容性:PySimpleGUI 4.60.5为免费版本,5.0+版本需商业授权。
- 事件驱动:所有控件交互通过
window.read()
捕获事件。 - 控件更新:使用
window[key].update(new_value)
动态修改控件属性。 - 布局嵌套:通过列表嵌套实现复杂界面(如
[[[sg.Input()]*3] for _ in range(3)]
创建3x3输入网格)。
以上示例覆盖了PySimpleGUI 4.60.5的核心功能,可根据实际需求组合使用。