首页 > 编程语言 >GUI利器 python界面开发PySimpleGUI

GUI利器 python界面开发PySimpleGUI

时间:2024-05-06 16:47:32浏览次数:12  
标签:python GUI PySimpleGUI window values sg event

大家好,很多人都想写一个自己的桌面程序,那么PySimpleGUI 是一个非常好的选择,它旨在简化 GUI(图形用户界面)的创建过程。它基于几种流行的 Python GUI 库,如 tkinter、Qt、WxPython 和 Rem)i,但提供了一个更简单直观的接口。

通过 PySimpleGUI,即使是没有图形界面开发经验的开发者也可以快速创建漂亮、功能丰富的窗口应用。

 

为什么选择PySimpleGUI?

  1. 1. 易用性PySimpleGUI提供了简洁的API,使得创建GUI变得非常简单。

  2. 2. 灵活性:支持多种后端,可以根据不同的需求选择合适的后端。

  3. 3. 高效性:虽然简单,但PySimpleGUI并不牺牲性能,它能够创建响应迅速的应用程序。

  4. 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()
图片

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

示例 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()

 

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

一个进阶案例

创建一个简单的计算器

让我们通过一个简单的计算器案例来展示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()

 

代码解析

  1. 1. 导入PySimpleGUI库。

  2. 2. 定义计算器的布局,包括文本、输入框、输出文本和按钮。

  3. 3. 创建一个窗口,传入窗口标题和布局。

  4. 4. 进入事件循环,监听用户操作。

  5. 5. 根据用户的操作更新输出结果或处理异常。

  6. 6. 当用户关闭窗口时退出循环,并关闭窗口。

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

标签:python,GUI,PySimpleGUI,window,values,sg,event
From: https://www.cnblogs.com/nanyu/p/18175308

相关文章

  • 一个惊艳的 python 库:PyWebIO,用 Python 写网站
    大家好,今天给大家介绍另一个简单而强大的web库--PyWebIO,它能让你的Python脚本快速拥有一个交互式的网页界面。想象一下,你不需要懂得前端开发,就能创建出用户友好的网页应用,今天,我们就来聊聊PyWebIO,看看它如何让Pythonweb开发变得更加简单有趣。为什么选择PyWebIO?1. 快速开发......
  • python实战练习题二
    """第一题:求解回文字符串回文是一个正读和反读都一样的字符串。例如:abcba12321是回文字符串hello123456不是回文字符串"""s=input("请输入字符串:")s2=s[::-1]#字符串逆序ifs==s2:print("{}是回文字符串!".format(s))else:pr......
  • python常见的实战练习题一
    """第一题:求解水仙花数水仙花数,也被称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrongnumber),是一个n位数(n≥3),其每个位上的数字的n次幂之和等于它本身。例如,三位数153是一个水仙花数,因为1^3+5^3+3^3=153。在三位数中,除了153,还有370、371和407也是水仙花......
  • JavaGUI - [04] BoxLayout
    题记部分  一、简介  为了简化开发,Swing引入了一个新的布局管理器:BoxLayout。BoxLayout可以在垂直和水平两个方向上摆放GUI组件,BoxLayout提供了如下一个简单的构造器:BoxLayout(Containertarget,intaxis)  指定创建基于target容器的BoxLayout布局管理器,该布局管理......
  • Python高阶---反射
    ======================================反射:hasattr:输入一个字符串,判断对象有没有这个方法或属性getattr:获取对象属性或方法的引用。如果是方法,则返回方法的引用;如果是属性,则直接返回属性值;如果该方法或属性不存在,则抛出异常。setattr:动态添加一个方法或属性delatt......
  • 如何用Python开发一个命令行工具
    如何编写一个python命令行工具importargparsedefparse_args():parser=argparse.ArgumentParser()parser.add_argument("-nc","--test_a",type=int,default=10,help="testA")parser.add_argument(&quo......
  • JavaGUI - [03] LayoutManager布局管理器
    Component中有一个方法setBounds()可以设置当前容器的位置和大小,但如果我们手动为组件设置位置和大小的话,就会造成程序的不通用性。LayoutManager布局管理器可以根据运行平台来自动调整组件大小,程序员不用再手动设置组件的大小和位置,只需要为容器选择合适的布局管理器即可。 ......
  • Python高阶---魔法方法
    魔法方法:通过dir(函数名)查看到的方法中以双下划线开始,以双下划线结束的方法。=========================================classStudent:definit(self,name,age):"""负责初始化类的实例,实例是由__new__方法传递过来的,也就是这里的self:paramname::paramage:"""self......
  • Python文本统计与分析从基础到进阶
    本文分享自华为云社区《Python文本统计与分析从基础到进阶》,作者:柠檬味拥抱。在当今数字化时代,文本数据无处不在,它们包含了丰富的信息,从社交媒体上的帖子到新闻文章再到学术论文。对于处理这些文本数据,进行统计分析是一种常见的需求,而Python作为一种功能强大且易于学习的编程语言......
  • [数据分析与可视化] Python绘制数据地图3-GeoPandas使用要点-转载
    [数据分析与可视化]Python绘制数据地图3-GeoPandas使用要点 本文主要介绍GeoPandas的使用要点。GeoPandas是一个Python开源项目,旨在提供丰富而简单的地理空间数据处理接口。GeoPandas扩展了Pandas的数据类型,并使用matplotlib进行绘图。GeoPandas官方仓库地址为:GeoPandas。Ge......