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

news/2025/9/21 6:18:37/文章来源:https://www.cnblogs.com/nxhujiee/p/19103141

以下是基于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.mzph.cn/news/908654.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用XState测试分布式微服务的完整指南

本文介绍了如何使用XState库建模微服务工作流,通过状态机简化测试流程,提升测试覆盖率,并利用声明式状态机实现可视化调试,适用于订单处理等分布式场景。测试分布式微服务使用XState 分布式微服务架构带来了可扩展…

含“华”量超高的奥迪,卖爆了

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087奥迪转型,有点狠。没有四环标,但有隐藏式门把手,电子外后视镜,…

某些外审专家的意见,真是臭不可闻

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087常在网上看到有学者抱怨,外审意见就是一坨翔! 每次看到这样的话,…

智元首次明确七人合伙人团队

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 35469554100490879月19日,第一财经记者在智元官网发现,官网已经上架了“合伙人团队…

大模型赋能的具身智能:自主决策和具身学习技术最新综述

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087 具身智能(Embodied AI)被视为通往通用人工智能(AGI)的关键路径…

ST首批中国产MCU,价格曝光

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087去年十一月底,欧洲芯片大厂意法半导体STMicroelectronics在投资者…

ABC424

ABC424C. New Skill Acquired 多源bfs代码实现 #include <bits/stdc++.h> #define rep(i, n) for (int i = 0; i < (n); ++i)using namespace std;int main() {int n;cin >> n;vector<vector<int…

解决 Windows 无法挂载 HTTP WebDAV(AList,OpenList)的问题

Windows 默认的 WebClient 服务仅支持 HTTPS 协议,而本地搭建的 WebDAV 服务通常基于 HTTP 协议,但是我们有办法将其“修复”。解决 Windows 无法挂载 HTTP WebDAV 的问题 当前市面上大多数网盘都可以挂载到 AList(…

在Ubuntu系统中使用gcc和Makefile编译C程序

一.用Ubuntu系统编写hello world程序并编译运行 1.用vim命令编写hello world程序代码2.用gcc命令编译并运行二.用Ubuntu系统编写主程序文件main1.c和子程序文件sub1.h并编译运行 1.编写子程序sub1.h2.编写主程序main1.…

HN CSP-S 2024 游记

本文中,一 Day 指一段 \(24\) 小时的时间段,从 \(4:00\) 开始计算。S1 Day -1 @湖南省队御用绫厨TM_Sharweek 拉我进了一个群。 熬到了凌晨一点,与 @湖南省队御用绫厨TM_Sharweek 在 QQ 上进行了聊天。 睡着了。 S1…

CSP-S 2025 初赛解析

T1有 5 个红色球和 5 个蓝色球,它们除了颜色之外完全相同。将这 10 个球排成一排,要求任意两个蓝色球都不能相邻,有多少种不同的排列方法? ( )A. 25 B. 30 C. 6 D. 120选 C. 排列组合:不相邻问题先排 \(5\) 个红…

科研牛马碎碎念

写在前面 7年之前,刚进入高中的时候,我开始了写日记,名之“旧梦”。如今再去看里面记录的那些往事,竟真的亦真亦假、亦虚亦实,仿佛不是发生在自己身上的经历,而是做了一场很长又很短的梦,但又确是一些趣事,看来…

9.20 闲话

1有点不开心,没有道理的不开心。 这周运气拉满了,模拟赛打的都还可以,没有出现之前那种联赛模拟会 \(0\) 道题的情况,该过的题都过了。初赛更是撞大运捡了个 \(100\)(虽然 \(60\) 和 \(100\) 没有区别,但上次拿 …

paddleocr 调试

AppData\Local\Programs\Python\Python39\Lib\site-packages\paddleocr 我修改的是这个目录下的源码

芯片组

Intel系列 超频支持 PCIe通道 目标用户Z系列 完整支持 最多 发烧友/游戏玩家B系列 部分支持 中等 主流用户H系列 不支持 基础 办公/入门AMD系列 超频支持 PCIe通道 目标用户 主要特点X系列 完整支持 最多 发烧友/工作站…

18.日志

18.日志 18.1 自带log包在日常项目,在出现问题之后需要排查,一种比较主要的排查方式是通过日志。所以在代码的关键地方,需要打印相应的日志。在Go语言中log包提供了简单的日志功能,其输出格式如下所示:打印 格式化…

testuserjiagou

https://aws.amazon.com/cn/blogs/architecture/disaster-recovery-dr-architecture-on-aws-part-i-strategies-for-recovery-in-the-cloud/

IDEA 自动编译和热部署

测试环境 IDEA2023 一 自动编译菜单 File >> Settings >> Build,Execution,Deployment >> Compiler 勾选上 Build project automatically 二 热加载 1. 设置自动编译后,添加依赖<dependency&g…

testusers3

我们需要为AWS S3创建一个策略,以便允许ALB(Application Load Balancer)将访问日志上传到指定的S3存储桶。 策略需要满足以下条件: 允许ALB服务将日志写入S3存储桶。 只允许对特定存储桶和特定前缀(如果需要)的写…

RabbitMQ核心模型简介,Hello World的生产与消费

本章学习目标理解AMQP模型中的核心概念:Connection, Channel, Producer, Consumer, Queue。创建一个.NET项目并添加RabbitMQ客户端库。使用C#编写代码发送一条消息("Hello World")。使用C#编写代码接收并…