当前位置: 首页 > news >正文

[重要] 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, '退出'): breakif 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, '退出'): breakif 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): breakif 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 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实现复杂绘图。

八、状态与进度

  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): breakwindow['-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: breakif 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的核心功能,可根据实际需求组合使用。

http://www.hskmm.com/?act=detail&tid=11503

相关文章:

  • 使用XState测试分布式微服务的完整指南
  • 含“华”量超高的奥迪,卖爆了
  • 某些外审专家的意见,真是臭不可闻
  • 智元首次明确七人合伙人团队
  • 大模型赋能的具身智能:自主决策和具身学习技术最新综述
  • ST首批中国产MCU,价格曝光
  • 狄拉克δ函数探源:从广义函数到分析核与信号窗 (AI辅助撰写)
  • 解决 Windows 无法挂载 HTTP WebDAV(AList,OpenList)的问题
  • 在Ubuntu系统中使用gcc和Makefile编译C程序
  • HN CSP-S 2024 游记
  • CSP-S 2025 初赛解析
  • 科研牛马碎碎念
  • 9.20 闲话
  • 芯片组
  • 18.日志
  • testuserjiagou
  • IDEA 自动编译和热部署
  • testusers3
  • RabbitMQ核心模型简介,Hello World的生产与消费
  • 关于oj在创建文件夹失败的原因
  • Linux 基础命令 02
  • RabbitMQ核心模型简介,Hello World的发送与消费
  • 软工个人项目 - Helen
  • 概率论第二章部分习题
  • 记录 | 心理行动机制模型
  • ENSP模拟搭建典型中小型企业网架构
  • 【Java】ArrayList讲解
  • 【Java】HashMap讲解
  • 图解15:DNS工作原理
  • 图解16:数据和信息流的9大架构模式