1. 背景

  PySimpleGUI是一个简单易用的Python GUI库,它提供了一种直观且快速创建图形用户界面的方式。

2. 安装

pip install PySimpleGUI

3. PySimpleGUI 的基本结构

一个基本的 PySimpleGUI 程序主要包括以下几个部分:

1. 导入 PySimpleGUI 库

2. 定义窗口的布局

在PySimpleGUI中,窗口的布局是使用一个二维列表来定义的。这个列表包含了要在窗口中显示的各种组件,如按钮、文本框等。每个组件都有一个或多个属性,如标识符、文本、颜色等。通过定义布局,可以确定窗口中组件的位置和排列方式

3.创建窗口

使用定义好的布局,可以创建一个窗口对象。窗口对象是应用程序与用户交互的主要界面。创建窗口时,需要提供一个标题作为窗口的名称,并将布局作为参数传递给sg.Window类的构造函数。

4. 事件循环

一旦窗口被创建,就需要进入事件循环,以便监听和响应用户的操作。在PySimpleGUI中,事件循环是通过window.read()方法实现的。该方法会阻塞程序的执行,直到发生一个事件(如按钮被点击、窗口关闭等)。一旦事件发生,window.read()方法会返回一个元组,其中包含事件和相应的值(如按钮的标识符、文本框的内容等)

5. 关闭窗口

在事件循环结束后,需要关闭窗口以释放资源。可以使用window.close()方法来关闭窗口对象。

下面是一个简单的示例:

import PySimpleGUI as sg

# 定义窗口的布局
layout = [
[sg.Text("Hello from PySimpleGUI")],
[sg.Button("OK")]
] # 创建窗口
window = sg.Window("Demo", layout) # 事件循环
while True:
event, values = window.read()
if event == "OK" or event == sg.WIN_CLOSED:
break # 关闭窗口
window.close()

4. PySimpleGUI 的主要组件

PySimpleGUI 提供了许多预定义的组件,以下是一些常用组件的使用方法及其参数含义:

4.1 Text 组件

Text 组件用于在界面上显示一些文本。

sg.Text('This is some text')

主要参数:

  • text(str):要显示的文本。
  • size((int, int)):文本框的大小(字符宽度, 行数)。
  • auto_size_text(bool):如果为 True,文本框将根据内容自动调整大小。
  • click_submits(bool):如果为 True,当用户点击文本时,将触发一个事件。

4.2 Button 组件

Button 组件用于创建一个按钮。

sg.Button('Click me')

主要参数:

  • button_text(str):按钮上显示的文本。
  • size((int, int)):按钮的大小(字符宽度, 行数)。
  • auto_size_button(bool):如果为 True,按钮将根据内容自动调整大小。
  • bind_return_key(bool):如果为 True,当用户按下回车键时,将触发按钮点击事件。

4.3 InputText 组件

InputText 组件用于创建一个文本输入框。

sg.InputText('Default text')

主要参数:

  • default_text(str):输入框的默认文本。
  • size((int, int)):输入框的大小(字符宽度, 行数)。
  • password_char(str):如果设置,输入框将隐藏输入,显示此字符。

4.4 Checkbox 组件

Checkbox 组件用于创建一个复选框。

sg.Checkbox('Check me')

主要参数:

  • text(str):复选框旁边显示的文本。
  • default(bool):复选框的默认状态,如果为 True,复选框将被选中。

4.5 RadioButton 组件

RadioButton 组件用于创建一组单选按钮。

sg.Radio('Option 1', "RADIO1", default=True),
sg.Radio('Option 2', "RADIO1"),
sg.Radio('Option 3', "RADIO1"),

主要参数:

  • text(str):单选按钮旁边显示的文本。
  • group_id(str):单选按钮的组ID,同一组的单选按钮共享同一个组ID。
  • default(bool):单选按钮的默认状态,如果为 True,单选按钮将被选中。

4.6 主题(Theme)
主题用于改变应用程序的整体外观。

主要参数:

  • theme(str):主题名称,可选值包括:'Default'(默认主题)、'DarkAmber'、'DarkBlue'、'DarkBrown'等。

4.7 图标(Icon)

图标用于设置应用程序的图标。

主要参数:

  • icon(str):图标文件的路径

4.8 布局行与列(Rows and Columns)

布局行和列可用于创建复杂的界面结构。

主要参数:

  • sg.Columnsg.Row中放置其他组件的列表。
  • element_justification(str):控制组件在列中的水平对齐方式,可选值有'center'、'left'、'right'。

4.9 分割线(Separator)

分割线用于在布局中添加分割线。

主要参数:无

使用小栗子:

import PySimpleGUI as sg

# 设置主题和图标
sg.theme('DarkAmber')
sg.set_options(icon='my_icon.ico') # 定义布局
layout = [
[sg.Text('Hello from PySimpleGUI!', size=(30, 1), justification='center')],
[sg.Image(filename='my_image.png')],
[sg.HorizontalSeparator()],
[sg.Text('Column 1'), sg.Text('Column 2')],
[sg.Input(key='-IN-'), sg.Input(key='-IN2-')],
[sg.Button('OK', image_filename='button_image.png'), sg.Button('Cancel')]
] # 创建窗口
window = sg.Window('Demo', layout) # 事件循环
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED or event == 'Cancel':
break # 关闭窗口
window.close()

  

5. 打包成可执行程序

要将 PySimpleGUI(或任何 Python 脚本)打包成一个可执行程序,你可以使用 PyInstaller。PyInstaller 可以将 Python 程序打包成一个单一的可执行文件,这个文件可以在没有 Python 环境的计算机上运行。

以下是一个简单的步骤来打包 PySimpleGUI 程序:

  1. 安装 PyInstaller。在命令行中输入以下命令:

    pip install pyinstaller
  2. 使用 PyInstaller 打包你的 PySimpleGUI 程序。假设你的程序名为 my_program.py,你可以在命令行中输入以下命令:

    pyinstaller --onefile --windowed my_program.py
    • --onefile 参数表示你想要将你的程序打包成一个单一的可执行文件。
    • --windowed 参数表示你的程序是一个 GUI 程序,不需要命令行窗口。

完成以上步骤后,你会在 dist 目录下找到一个名为 my_program.exe(在 Windows 上)或 my_program(在 Linux 和 macOS 上)的可执行文件。你可以在没有 Python 环境的计算机上运行这个文件。

注意,PyInstaller 打包的可执行文件是平台相关的,也就是说,你在 Windows 上打包的程序不能在 Linux 或 macOS 上运行,反之亦然。如果你想要在不同的平台上运行你的程序,你需要在每个平台上分别打包。

另外,虽然 PyInstaller 可以打包大多数 Python 程序,但是有些程序可能需要特殊的处理,例如包含复杂依赖关系或需要访问特定文件的程序。在这种情况下,你可能需要修改 PyInstaller 的配置文件或使用其他打包工具。

 

PySimpleGUI 使用浅谈的更多相关文章

  1. 浅谈 Fragment 生命周期

    版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...

  2. 浅谈 LayoutInflater

    浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...

  3. 浅谈Java的throw与throws

    转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...

  4. 浅谈SQL注入风险 - 一个Login拿下Server

    前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...

  5. 浅谈WebService的版本兼容性设计

    在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...

  6. 浅谈angular2+ionic2

    浅谈angular2+ionic2   前言: 不要用angular的语法去写angular2,有人说二者就像Java和JavaScript的区别.   1. 项目所用:angular2+ionic2 ...

  7. iOS开发之浅谈MVVM的架构设计与团队协作

    今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...

  8. Linux特殊符号浅谈

    Linux特殊字符浅谈 我们经常跟键盘上面那些特殊符号比如(?.!.~...)打交道,其实在Linux有其独特的含义,大致可以分为三类:Linux特殊符号.通配符.正则表达式. Linux特殊符号又可 ...

  9. 浅谈Angular的 $q, defer, promise

    浅谈Angular的 $q, defer, promise 时间 2016-01-13 00:28:00  博客园-原创精华区 原文  http://www.cnblogs.com/big-snow/ ...

  10. 浅谈Hybrid技术的设计与实现第三弹——落地篇

    前言 接上文:(阅读本文前,建议阅读前两篇文章先) 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 根据之前的介绍,大家对前端与Native的交互应该有一些简单的认识了,很多 ...

随机推荐

  1. Record - Nov. 28st, 2020 - Exam. REC

    Prob. 1 Desc. & Link. 暴力为 \(\Theta(NK)\). 正解(也许): 把每一个全为正整数的子段找出来. 然后判断一下中间连接的情况即可. 但是这样决策情况太多了. ...

  2. Spring注解之@ExceptionHandler 统一异常处理和获取方法名

    摘要:在 Spring Boot 中,使用Spring注解@ControllerAdvice 和 @ExceptionHandler 统一处理异常,并捕获方法名,从而快速定位错误原因. 背景分析    ...

  3. 其它——Postman做接口测试

    文章目录 一 介绍 二 下载安装 三 使用 四 批量接口测试(创建collections) 五 导出与导入同事的接口 5.1 导出 5.2 导入 一 介绍 在前后端分离开发时,后端工作人员完成系统接口 ...

  4. Vue2系列(lqz)——Vue生命期钩子、组件

    文章目录 Vue声明期钩子 组件 1 fetch和axios 1.1 fetche使用 1.2 axios的使用 2 计算属性 2.1 通过计算属性实现名字首字母大写 2.2 通过计算属性重写过滤案例 ...

  5. 爬虫系列——Beautifulsoup4

    文章目录 一 介绍 二 基本使用 三 遍历文档树 四 搜索文档树 五 修改文档树 六 总结 ​ 一 介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能 ...

  6. ExcelPatternTool 开箱即用的Excel工具包现已发布!

    目录 ExcelPatternTool 功能 特点: 快速开始 使用说明 常规类型 高级类型 Importable注解 Exportable注解 IImportOption导入选项 IExportOp ...

  7. Redis宕机恢复

    AOF(Append Only File) Redis持久化:AOF日志 用 AOF 方法进行故障恢复的时候,需要逐一把操作日志都执行一遍.如果操作日志非常多,Redis 就会恢复得很缓慢,影响到正常 ...

  8. 深入理解JMeter中的JSON Extractor

    Apache JMeter是一款出色的开源性能和功能测试工具,这款工具提供了丰富的功能和强大的扩展性,可以应对各种复杂的测试需求.当我们在进行接口测试时,经常会遇到需要从接口响应中提取信息并在后续请求 ...

  9. Qt中QTabWidget添加控件(按钮,label等)以及使用方法

    今天遇到了一个问题,已经在QTabWidget每一行添加了一个按钮,我有一个需求就是,点击每一行的按钮都有各自的响应 首先说一下添加控件代码: 添加文字可以用setItem,添加控件就得用setCel ...

  10. 节能减排 | AIRIOT智慧工厂节能管理解决方案

    工厂作为高能耗的生产型企业,降低能耗和提升资源利用率方面就显得很重要,对实施国家倡导的节能降耗.绿色发展有着很大程度上的必要性.然而,工厂能源管理从传统手段向智能化升级转型的过程中,企业也不可避免的面 ...