一个非常简单好用的Python图形界面库(PysimpleGUI)

作者:somenzz 时间:2022-12-25 08:17:09 

前一阵,我在为朋友编写一个源代码监控程序的时候,发现了一个 Python 领域非常简单好用的图形界面库。

说起图形界面库,你可能会想到 TkInter、PyQt、PyGUI 等流行的图形界面库,我也曾经尝试使用,一个很直观的感受就是,这太难用了。就去网上搜搜,看看有没有一些 demo,拿来改改,结果很少有,当时我就放弃了这些图形库的学习,转而使用了 vue+flask 的形式以浏览器网页作为程序界面,因为我会这个,即使实现起来稍微麻烦,但是也快。

那有朋友可能问了:一定要学习图形界面吗?

其实不一定,如果你写的程序都是自己用,或者配合其他程序员使用,那么直接命令行调用即可,完全不用学习图形界面?那什么时候要学呢?如果你要做游戏,或者你要为他人(非技术人员)编写软件工具,那么你就需要学习图形界面了。我是后者,偶尔受邀帮别人写点小工具,因此有个图形界面体验会好很多。

今天要说的这个库就是 PySimpleGUI,在 GitHub 仓库[1]有 5.1K 个 star,20 天前还有人提交代码,可以说非常火热了。

我看了官方文档,找了个 demo,花了 2 个小时的时间,写了 56 行代码,就搞定了一个具有图形界面的监控工具,如下:

要说 PysimpleGUI 最吸引我的地方,在于它有 200 多个示例程序,几乎覆盖了日常的开发需求,拿来稍作修改就可以用,着实方便。

PysimpleGUI 内部封装了 tkinter,Qt(pyside2),wxPython和 Remi,Remi 用于浏览器支持,因此你很容易将你的界面搬到浏览器中而无需修改代码。如下图:

一个非常简单好用的Python图形界面库(PysimpleGUI)

还有最吸引我的一点,就是足够简单,在几分钟内用几行代码就可以构建自定义 GUI 布局,对于初学者来说足够容易,对于高级用户来说足够强大。广泛的文档。有 100 多种内置颜色主题,200 多个示例程序[2],还经常更新。如果你玩 Raspberry Pi,也可以用这个库写界面,你说好用不好用。

通常一个 PySimpleGUI 程序包含 5 个部分,见下面代码的注释:


import PySimpleGUI as sg            # Part 1 - 导入库

# 定义窗口的内容
layout = [ [sg.Text("What's your name?")],   # Part 2 - 排版
     [sg.Input()],
     [sg.Button('Ok')] ]

# 创建窗口
window = sg.Window('Window Title', layout)   # Part 3 - 窗口定义

# Display and interact with the Window
event, values = window.read()          # Part 4 - 开启主循环 window.read()

# Do something with the information gathered
print('Hello', values[0], "! Thanks for trying PySimpleGUI")

# Finish up by removing from the screen
window.close() # Part 5 - 关闭窗口

执行上述代码,会得到一个如下图所示的程序:

一个非常简单好用的Python图形界面库(PysimpleGUI)

这仅仅是一个类似 hello world 的程序,PySimpleGUI 还可以做出更加强大的图形界面和游戏界面,

多个窗口

我看到许多新程序员都在挣扎的一件事是在他们选择的GUI工具包中打开多个窗口。 幸运的是,PySimpleGUI明确标明了如何执行此操作的说明。 实际上,他们有两种不同的“设计模式”来做这种事情。

为简便起见,我将仅展示如何执行两个活动窗口:


# -*- coding: utf-8 -*-
# https://www.jianshu.com/u/69f40328d4f0
# https://github.com/china-testing/python-api-tesing
# https://china-testing.github.io/
# support q group: 630011153 144081101
import PySimpleGUI as sg

# Create some widgets
ok_btn = sg.Button('Open Second Window')
cancel_btn = sg.Button('Cancel')
layout = [[ok_btn, cancel_btn]]

# Create the first Window
window = sg.Window('Window 1', layout)

win2_active = False

# Create the event loop
while True:
 event1, values1 = window.read(timeout=100)

if event1 in (None, 'Cancel'):
   # User closed the Window or hit the Cancel button
   break

if not win2_active and event1 == 'Open Second Window':
   win2_active = True
   layout2 = [[sg.Text('Window 2')],
         [sg.Button('Exit')]]

window2 = sg.Window('Window 2', layout2)

if win2_active:
   events2, values2 = window2.Read(timeout=100)
   if events2 is None or events2 == 'Exit':
     win2_active = False
     window2.close()

window.close()

参考资料

[1] GitHub 仓库: https://github.com/PySimpleGUI/PySimpleGUI

[2] 200 多个示例程序: https://github.com/PySimpleGUI/PySimpleGUI/tree/master/DemoPrograms

来源:https://blog.csdn.net/somenzz/article/details/111399125

标签:Python,图形界面库,PysimpleGUI
0
投稿

猜你喜欢

  • javascript实现双端队列

    2024-05-02 16:18:58
  • python django框架中使用FastDFS分布式文件系统的安装方法

    2022-02-25 21:27:33
  • JavaScript闭包与作用域链实例分析

    2024-04-10 10:48:55
  • Python中请不要再用re.compile了

    2021-08-30 23:57:51
  • python可视化大屏库big_screen示例详解

    2021-10-16 14:32:39
  • Python将图片转换为字符画的方法

    2022-06-15 07:52:27
  • python检测文件夹变化,并拷贝有更新的文件到对应目录的方法

    2023-11-07 12:56:06
  • python基础之多态

    2022-04-05 10:06:06
  • 浅谈python正则的常用方法 覆盖范围70%以上

    2022-05-18 21:01:13
  • SQL Server误区30日谈 第20天 破坏日志备份链之后,需要一个完整备份来重新开始日志链

    2024-01-22 15:39:53
  • hello world程序集锦

    2022-10-31 08:12:17
  • 一文学会VSCode使用python

    2022-07-26 16:06:46
  • Python封装shell命令实例分析

    2022-03-11 13:39:37
  • 关于Python 中IndexError:list assignment index out of range 错误解决

    2021-01-27 19:06:01
  • ASP中利用OWC控件实现图表功能详解

    2010-05-27 12:26:00
  • 安装MySQL后include目录下没有找到libmysql.lib

    2024-01-25 17:55:13
  • 华为2019校招笔试题之处理字符串(python版)

    2023-09-29 19:42:04
  • 对Django的restful用法详解(自带的增删改查)

    2023-11-12 07:45:04
  • Vue组件全局注册实现警告框的实例详解

    2024-05-02 16:53:05
  • 本地使用Docker搭建go开发环境的全过程

    2024-04-30 10:05:49
  • asp之家 网络编程 m.aspxhome.com