5分钟用 Python 写一个软件,快速入门 PySimpleGUI

大家好,很多人都想写一个自己的桌面程序,那么PySimpleGUI 是一个非常好的选择,它旨在简化 GUI(图形用户界面)的创建过程。它基于几种流行的 Python GUI 库,如 tkinter、Qt、WxPython 和 Remi,但提供了一个更简单直观的接口。通过 PySimpleGUI,即使是没有图形界面开发经验的开发者也可以快速创建漂亮、功能丰富的窗口应用。

为什么选择PySimpleGUI?

  1. 易用性PySimpleGUI提供了简洁的API,使得创建GUI变得非常简单。
  2. 灵活性:支持多种后端,可以根据不同的需求选择合适的后端。
  3. 高效性:虽然简单,但PySimpleGUI并不牺牲性能,它能够创建响应迅速的应用程序。
  4. 跨平台:可以在Windows、macOS和Linux上运行。

基础概念和原理

在深入案例之前,我们先来了解一些基础概念:

窗口(Window)

PySimpleGUI中,一切都是从创建一个窗口开始的。窗口是用户与程序交互的界面。

布局(Layout)

布局定义了窗口中元素的排列方式。PySimpleGUI支持多种布局管理器,如VerticalHorizontal等。

元素(Element)

元素是构成GUI的基本组件,如按钮(Button)、输入框(Input)、列表(List)等。

事件(Event)

事件是用户与GUI交互的结果,如点击按钮、输入文本等。PySimpleGUI通过回调函数来处理这些事件。

安装

这个包5.0以后开始收费了,建议安装如下版本

pip install PySimpleGUI==4.60.5 -i https://pypi.tuna.tsinghua.edu.cn/simple

案例

示例 1:创建一个简单的登录界面

import PySimpleGUI as sg

# 窗口布局定义
layout = [
    [sg.Text('用户名'), sg.InputText(key='username')],
    [sg.Text('密码'), sg.Input(key='password', password_char='*')],
    [sg.Button('登录'), sg.Button('退出')]
]

# 创建窗口
window = sg.Window('登录界面', layout)

# 事件循环
while True:
    event, values = window.read()
    if event in (None, '退出'):
        break
    elif event == '登录':
        # 检查用户名和密码
        if values['username'] == 'admin' and values['password'] == 'admin':
            sg.popup('登录成功!')
        else:
            sg.popup('错误的用户名或密码!')

window.close()

image-20240503214047882

在这个示例中,我们创建了一个包含用户名、密码输入框和两个按钮的简单界面。用户可以通过输入正确的用户名和密码组合来触发登录成功的弹窗。

示例 2:创建一个数据输入表单

import PySimpleGUI as sg

# 表单布局
layout = [
    [sg.Text('请输入以下信息')],
    [sg.Text('姓名', size=(15, 1)), sg.InputText()],
    [sg.Text('年龄', size=(15, 1)), sg.InputText()],
    [sg.Text('职业', size=(15, 1)), sg.Combo(['教师', '工程师', '医生', '艺术家'])],
    [sg.Submit(), sg.Cancel()]
]

# 创建窗口
window = sg.Window('信息表单', layout)

# 事件处理
while True:
    event, values = window.read()
    if event in (None, 'Cancel'):
        break
    if event == 'Submit':
        sg.popup(f"姓名: {values[0]}\n年龄: {values[1]}\n职业: {values[2]}")

window.close()

image-20240503214138213

这个例子展示了如何创建一个包含文本输入和下拉菜单的表单。用户提交信息后,将通过弹窗显示输入的内容。

一个进阶案例

创建一个简单的计算器

让我们通过一个简单的计算器案例来展示PySimpleGUI的用法。

代码实现

import PySimpleGUI as sg

# 定义计算器的布局
layout = [
    [sg.Text('简单计算器')],
    [sg.Input(key='INPUT1'), sg.Input(key='INPUT2', enable_events=True)],
    [sg.Text('结果:'), sg.Text('0', key='OUTPUT')],
    [sg.Button('加'), sg.Button('减'), sg.Button('乘'), sg.Button('除')],
    [sg.Button('退出')]
]

# 创建窗口
window = sg.Window('计算器', layout)

# 事件循环
while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break
    if event in ('加', '减', '乘', '除'):
        try:
            num1 = float(values['INPUT1'])
            num2 = float(values['INPUT2'])
            if event == '加':
                result = num1 + num2
            elif event == '减':
                result = num1 - num2
            elif event == '乘':
                result = num1 * num2
            elif event == '除':
                result = num1 / num2 if num2 != 0 else '除数不能为0'
            window['OUTPUT'].update(result)
        except ValueError:
            window['OUTPUT'].update('请输入有效的数字')

# 关闭窗口
window.close()

image-20240503214337640

代码解析

  1. 导入PySimpleGUI库。
  2. 定义计算器的布局,包括文本、输入框、输出文本和按钮。
  3. 创建一个窗口,传入窗口标题和布局。
  4. 进入事件循环,监听用户操作。
  5. 根据用户的操作更新输出结果或处理异常。
  6. 当用户关闭窗口时退出循环,并关闭窗口。

通过上述示例可以看出,PySimpleGUI 提供了一种快速而简便的方法来创建具有复杂交互功能的 GUI 应用。无论你是初学者还是有经验的开发者,PySimpleGUI 都能有效地帮助你实现应用原型或构建完整的用户界面,从而让 Python GUI 开发变得更加简单有趣。

如果分享你的信息,对你有用!别忘了三连击哦——点赞、收藏、关注!

喜欢学习Pyhon及副业知识,可添加微信tongwen1629围观学习!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/623884.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Hive的join操作

假设有三张表,结构和数据如下:-- 创建表 test_a,test_b,test_c CREATE TABLE test_a( id int, name string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY \t;--分别导入数据到三个表中 --test_a 1 a1 2 a2 4 a4 --test_b 1 b1 3 b3 4 b4 --…

探索ISP静态:网络连接的稳定基石

在数字化时代的浪潮中,互联网已成为我们生活、工作、学习不可或缺的一部分。而网络连接的质量,直接决定了我们在线体验的好坏。在众多网络连接技术中,“ISP静态”作为一种稳定、可靠的网络连接方式,越来越受到广大用户的青睐。本文…

Visual Studio 2022专业版安装步骤

Visual studio下载 首先进入下载官网,下载2022专业版 我勾选了以下几个和c#开发有关的,后面缺什么还可以再安装所有以少勾了问题也不大 然后改一下安装位置,点击安装 专业版秘钥激活 打开设置选择帮助,注册vs 专业版密钥: TD244-P4NB7-YQ6XK-Y8MMM-YWV2J

翻译《The Old New Thing》- Taxes: Remote Desktop Connection and painting

Taxes: Remote Desktop Connection and painting - The Old New Thinghttps://devblogs.microsoft.com/oldnewthing/20060103-12/?p32793 Raymond Chen 2006年01月03日 开发成本:远程桌面连接和绘制 当用户通过远程桌面连接进行连接时,视频操作会通过网…

基于51单片机的倒计时系统

基于51单片机的倒计时设计 (仿真+程序+设计报告) 功能介绍 具体功能: 1.六位LED显示,从59分59秒99开始倒计时; 2.倒计时精度为0.01秒,能正确地进行倒计时; 3.复位后…

安装adobe系列,提示错误代码146解决办法

安装Adobe系列产品如PS、PR、Lrc等产品时,会因为各种各样的错误导致安装失败!今天小编为大家带来的是安装adobe系列,提示错误代码146解决办法,收藏起来吧! 方法一:就是传说中的万能大法,关机重启…

OpenAI 震撼发布:GPT-4o免费,实时语音视频交互开启新纪元

OpenAI 震撼发布:GPT-4o免费,实时语音视频交互开启新纪元 在仅仅问世17个月后,OpenAI 研制出了仿佛科幻片中登场的超级人工智能——GPT-4o,而且所有人都可以完全免费使用,让这个科技界的巨浪让人震撼无比!…

【CSP CCF记录】202009-1 称检测点查询

题目 过程 难点&#xff1a;编号和位置的一一对应&#xff0c;不同位置的距离可能相等。 所以使用一个结构体记录不同检测点的编号和到居民地的距离。 sort函数进行排序。Sort函数使用方法 参考&#xff1a;http://t.csdnimg.cn/Y0Hpi 代码 #include <bits/stdc.h>…

大华智能物联综合管理平台 fastjson反序列化漏洞

文章目录 免责声明漏洞描述漏洞原理影响版本漏洞复现修复建议 免责声明 本文章仅供学习与交流&#xff0c;请勿用于非法用途&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任 漏洞描述 大华智慧园区综合管理平台是一个集智能化、信息化、网络化、安全…

JavaEE初阶-多线程进阶2

文章目录 前言一、CAS1.1 CAS的概念1.2 原子类1.3 CAS的ABA问题 二、JUC中常用类2.1 Callable接口2.2 ReentrantLock&#xff08;可重入&#xff09;2.3 Semaphore信号量2.4 CountDownLatch类2.5 CopyOnWriteArrayList类2.6 ConcurrentHashMap 前言 对于多线程进阶的部分&…

大型语言模型自我进化综述

24年4月来自北大的论文“A Survey on Self-Evolution of Large Language Models”。 大语言模型&#xff08;LLM&#xff09;在各个领域和智体应用中取得了显着的进步。 然而&#xff0c;目前从人类或外部模型监督中学习的LLM成本高昂&#xff0c;并且随着任务复杂性和多样性的…

嵌入式学习第三十三天!(二叉树)

1. 树的概念&#xff1a; 1. 树&#xff1a;由n个结点组成的有限集&#xff0c;有且只有一个根结点&#xff08;由根结点可以访问后继结点&#xff09;&#xff0c;其他结点只有一个前驱结点&#xff0c;但可以有多个后继结点&#xff08;一对多&#xff09;。当n 0时&#xf…

unordered_map 和 unordered_set

unordered —— 无序的&#xff0c;从表面上来看&#xff0c;与 map 和 set 不同之处就在于&#xff0c;unordered_map 和 unordered_set 无法保证插入数据是有序的&#xff1b; 尽管如此&#xff0c;由于这两种容器内部封装了“哈希桶”&#xff0c;可以实现快速查找数据 ——…

EE trade:投资贵金属的技巧

投资贵金属&#xff0c;特别是流行的黄金和白银&#xff0c;需要一个明智的策略和一些重要的技巧。以下是一些有用的投资技巧&#xff1a; 进行市场研究&#xff1a;在投资前了解市场运行机制、价格波动因素以及可能影响市场的宏观经济指标。 理解供需关系&#xff1a;贵金属…

历史影像的下载办法总结

最近想要下黄河口的历史影像&#xff0c;试验了几个办法&#xff1a; 1&#xff09;参考文献1中的办法&#xff0c;用Global Mapper下载World Imagery Wayback网站的历史数据&#xff0c;能下载从2014年至现在的&#xff1b; 2&#xff09;参考文献1中的办法&#xff0c;用SA…

2024淘宝天猫618凑单跨店满300减多少及618红包领取口令是什么?

2024年天猫618购物狂欢节全攻略 随着夏日的脚步临近&#xff0c;一年一度的天猫618年中大促也即将拉开帷幕。作为年中最大的购物狂欢节&#xff0c;天猫618不仅汇聚了众多优质商品&#xff0c;还准备了丰富的优惠活动和红包福利&#xff0c;让消费者在享受购物乐趣的同时&…

LeetCode1657确定两个字符串是否接近

题目描述 如果可以使用以下操作从一个字符串得到另一个字符串&#xff0c;则认为两个字符串 接近 &#xff1a; 操作 1&#xff1a;交换任意两个 现有 字符。例如&#xff0c;abcde -> aecdb操作 2&#xff1a;将一个 现有 字符的每次出现转换为另一个 现有 字符&#xff0…

如何做好图纸加密

在工业设计领域&#xff0c;图纸无疑是企业最宝贵的资产之一&#xff0c;其中包含了大量的创新思想、独特设计和商业秘密。然而&#xff0c;随着信息技术的发展和应用的普及&#xff0c;图纸防泄密工作面临着前所未有的挑战。因此&#xff0c;如何有效地防止图纸泄密&#xff0…

QCC---Aptx Lossless验证

因为aptx Lossless属于高通骁龙声音的一部分&#xff0c;一般支持高通骁龙声音的设备会支持到&#xff0c;比如说手机&#xff0c;而且还要支持最新的aptx adaptive协议R2.2版本。但是如果手上没有这样的手机的话&#xff0c;有source芯片也可以去做测试验证。在最新的784.1版本…

【class2】人工智能初步(自然语言处理)

要实现从评价中提取高频关键词&#xff0c;并判别其正负面性&#xff0c;其实是通过人工智能领域中的一个分支&#xff1a;自然语言处理。 在了解自然语言处理之前&#xff0c;我们先来说说&#xff0c;什么是自然语言&#xff08;Natural Language&#xff09;&#xff1f;自…