[重要] PySimpleGU控件函数用法整理

以下是基于PySimpleGUI 4.60.5版本的控件函数用法演示示例整理,按功能分类并编号说明:

一、基础控件

  1. Text(文本显示)

    import PySimpleGUI as sg
    layout = [[sg.Text('欢迎使用PySimpleGUI', key='-TEXT-', font=('Arial', 14))]]
    window = sg.Window('文本示例', layout)
    window.read()
    window.close()
    
    • 参数说明:key为控件唯一标识,font设置字体样式。
  2. 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字典存储输入值。
  3. 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, '退出'): break
        if event == '-SUBMIT-': sg.popup(f"输入内容:{values['-INPUT-']}")
    window.close()
    
    • 事件处理:通过event判断按钮点击事件。

二、选择类控件

  1. Checkbox(复选框)

    layout = [[sg.Checkbox('记住密码', key='-REMEMBER-', default=True)]]
    window = sg.Window('复选框示例', layout)
    event, values = window.read()
    print(f"是否勾选:{values['-REMEMBER-']}")
    window.close()
    
    • 参数说明:default设置初始选中状态。
  2. 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'为单选组标识,确保互斥选择。
  3. 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设置默认选项。

三、高级控件

  1. 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, '退出'): break
        if event == '确认':
            selected = values['-FRUITS-'][0]  # 返回选中项的列表
            sg.popup(f"选择水果:{selected}")
    window.close()
    
  2. 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'垂直)。
  3. 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): break
        if event == '清空': window['-OUTPUT-'].update('')  # 清空内容
    window.close()
    

四、文件与目录操作

  1. FileBrowse(文件选择器)

    layout = [[sg.Text('选择文件:'), sg.Input(key='-FILE-'), sg.FileBrowse()]]
    window = sg.Window('文件选择示例', layout)
    event, values = window.read()
    print(f"文件路径:{values['-FILE-']}")
    window.close()
    
  2. FolderBrowse(文件夹选择器)

    layout = [[sg.Text('选择文件夹:'), sg.Input(key='-FOLDER-'), sg.FolderBrowse()]]
    window = sg.Window('文件夹选择示例', layout)
    event, values = window.read()
    print(f"文件夹路径:{values['-FOLDER-']}")
    window.close()
    

五、容器与布局

  1. 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()
    
  2. 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()
    

六、弹出窗口

  1. Popup(快捷弹窗)

    sg.popup('操作成功!', title='提示', icon=sg.SYSTEM_TRAY_MESSAGE_ICON_INFORMATION)
    
    • 参数说明:title设置标题,icon可选系统图标类型。
  2. PopupGetFile(文件选择弹窗)

    file_path = sg.popup_get_file('请选择文件', title='文件选择')
    print(f"选中文件:{file_path}")
    

七、图形与图像

  1. Image(图片显示)

    layout = [[sg.Image('logo.png', key='-IMAGE-')]]  # 仅支持PNG/GIF格式
    window = sg.Window('图片示例', layout)
    window.read()
    window.close()
    
  2. Canvas(自定义绘图区)

    import matplotlib.pyplot as plt
    from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
    import numpy as np
    
    fig, 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实现复杂绘图。

八、状态与进度

  1. 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()
    
  2. 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): break
        window['-STATUS-'].update('处理中...')  # 更新状态文本
    window.close()
    

九、菜单栏

  1. 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: break
        if event == '打开': sg.popup('打开文件功能待实现')
    window.close()
    

关键注意事项

  1. 版本兼容性:PySimpleGUI 4.60.5为免费版本,5.0+版本需商业授权。
  2. 事件驱动:所有控件交互通过window.read()捕获事件。
  3. 控件更新:使用window[key].update(new_value)动态修改控件属性。
  4. 布局嵌套:通过列表嵌套实现复杂界面(如[[[sg.Input()]*3] for _ in range(3)]创建3x3输入网格)。

以上示例覆盖了PySimpleGUI 4.60.5的核心功能,可根据实际需求组合使用。

posted @ 2025-09-21 06:15  nxhujiee  阅读(18)  评论(0)    收藏  举报