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

前一阵,我在为朋友编写一个源代码监控程序的时候,发现了一个 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 用于浏览器支持,因此你很容易将你的界面搬到浏览器中而无需修改代码。如下图:

还有最吸引我的一点,就是足够简单,在几分钟内用几行代码就可以构建自定义 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 - 关闭窗口

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

这仅仅是一个类似 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

到此这篇关于一个非常简单好用的Python图形界面库的文章就介绍到这了,更多相关Python 图形界面库内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 推荐8款常用的Python GUI图形界面开发框架

    作为Python开发者,你迟早都会用到图形用户界面来开发应用.本文将推荐一些 Python GUI 框架,希望对你有所帮助,如果你有其他更好的选择,欢迎在评论区留言. Python 的 UI 开发工具包 Kivy Kivy是一个开源工具包能够让使用相同源代码创建的程序能跨平台运行.它主要关注创新型用户界面开发,如:多点触摸应用程序.Kivy还提供一个多点触摸鼠标模拟器.当前支持的平台包括:Linux.Windows.Mac OS X和Android. Kivy拥有能够处理动画.缓存.手势.绘图等

  • 6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)

    在项目开发过程中加载.启动.下载项目难免会用到进度条,如何使用Python实现进度条呢? 这里为小伙伴们分享四种Python实现进度条的库:Progress库.tqdm库.alive-progress库和PySimpleGUI库,其中前三个是文本进度条库,最后一个是可以在GUI上运行的进度条. 1.Progress库 Progress是一种文本进度条库,库详细说明参加GitHub. 使用库之前需要进行安装,pip指令如下所示: pip install progressbar2 实现总耗时1S的进

  • 用PyQt进行Python图形界面的程序的开发的入门指引

    一般来说,选择用于应用程序的 GUI 工具箱会是一件棘手的事.使用 Python(许多语言也一样)的程序员可以选择的 GUI 工具箱种类繁多,而每个工具箱都有各自的优缺点.有些速度比其它工具箱快,有些比较小:有些易于安装,有些更适合于跨平台使用(对于这一点,还要指出,有些支持您需要满足的特定特性).当然,各种库都相应具有各种许可证. 对于 Python 程序员而言,缺省的 GUI 选择是 Tk(通过 Tkinter 绑定)- 其原因显而易见.Tkinter 和闲置的 IDE 是由 Python

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

    前一阵,我在为朋友编写一个源代码监控程序的时候,发现了一个 Python 领域非常简单好用的图形界面库. 说起图形界面库,你可能会想到 TkInter.PyQt.PyGUI 等流行的图形界面库,我也曾经尝试使用,一个很直观的感受就是,这太难用了.就去网上搜搜,看看有没有一些 demo,拿来改改,结果很少有,当时我就放弃了这些图形库的学习,转而使用了 vue+flask 的形式以浏览器网页作为程序界面,因为我会这个,即使实现起来稍微麻烦,但是也快. 那有朋友可能问了:一定要学习图形界面吗? 其实不

  • Python四款GUI图形界面库介绍

    目录 一.Python官方标准库:Tkinter (必须了解) 用法: 二.三方库:PyQt5(推荐,但是还是累) 1.安装: 2.QtDesigner 3.配置PyCharm 4.使用PyQt 三.三方库:wxPython 四.三方库:PyGTK 一.Python官方标准库:Tkinter (必须了解) Python内置图形界面库——Tkinter. Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平

  • 解决Python图形界面中设置尺寸的问题

    Python有自己内置的标准GUI库--Tkinter,只要安装好Python就可以调用. 今天学习到了图形界面设计的问题,刚开始就卡住了.为啥呢?就是用geometry(size)设置窗口尺寸大小,如800X600,"X"从哪里来成了问题. 首先想到,这是个乘号,但是在程序中没有插入特殊符号这一说啊.所以,插入特殊符号的方法肯定不行了. 然后我心血来潮,从word的公式里复制了一个乘号过来(我也是服了我自己了),运行程序,可想而知,报错没商量. 看来求助外面是没用了.必须在Pytho

  • 如何Tkinter模块编写Python图形界面

    一.为何使用Tkinter而非PyQt 众所周知,在Python中创建图形界面程序有很多种的选择,其中PyQt和wxPython都是很热门的模块包,这些第三方的图形界面模块功能强大.配置丰富,界面美观,是很多人的选择. 州的先生也经常使用PyQt5来为Python程序写上图形界面,以方便程序的使用. 而今天,我们要介绍的是Python内置的一个图形界面模块--tkinter. 在网络上有很多抱怨Tkinter模块的言论,比如:界面丑.不灵活.扩展功能差.模块少--等等,诚然,Tkinter确实有

  • 实现Python图形界面框架TkInter写GUI界面应用简介过程操作

    前言 它的底层是Tcl/Tk,先用起来再说,另外Python毕竟是面向对象语言,所以全文会使用到class和对象,尽量日后能满足开发项目的需求. (备注:Tcl/Tk 是一种简明,高效,可移植性好的编程语言.在信息产业领域具有广泛的应用.) Hello World 从Hello World写起,涉及到一个简单的文本控件Label,当然控件需要显示的容器,此处我们将其显示在一个Window上,也会使用一种布局方式pack() import tkinter as tk class RootWindo

  • python图形界面开发之wxPython树控件使用方法详解

    wxPython树控件介绍 树(tree)是一种通过层次结构展示信息的控件,如下图所示是树控件示例,左窗口中是树控件,在wxPython中树控件类是wx.TreeCtrl. wx.TreeCtrl常用的方法有 AddRoot(text, image=-1, selImage=-1, data=None).添加根节点,text参数根节点显示的文本:image参数是该节点未被选中时的图片索引,wx.TreeCtrl中使用的图片被放到wx.ImageList图像列表中:selImage参数是该节点被选

  • Python 图形界面框架TkInter之在源码中找pack方法

    目录 一.HelloWorld看pack() 二.pack()方法分析 三.pack_configure()方法分析 四.Label的继承结构 五.查看pack()方法源码的收获 前言: tkinter提供了3种布局管理方式: 1.pack 2.grid 3.place 每种布局管理器都非常有用,根据不同的需求,选择对应的布局方式,每个控件都可以使用pack作为布局管理器,从源码中看下pack()在哪里? 一.HelloWorld看pack() import tkinter   my_windo

  • python图形界面tkinter的使用技巧

    目录 一.python图形界面tk之滚动文本框的实现示例 二.python图形界面tk之控件随窗口自变化的实现示例 三.python图形界面tk之顶部菜单栏实现示例 四.python图形界面tk之多选框实现示例 五.python图形界面tk之打开文件实现示例 六.python图形界面tk之保存文件实现示例 一.python图形界面tk之滚动文本框的实现示例 使用python的tkinter库实现滚动文本框的方式,目前我知道的有两种,一种方式是使用frame容器来放置Text控件和Scrollba

  • 利用QT写一个极简单的图形化Python闹钟程序

    今天我们讲一下用Python写的GUI小程序.一个小闹钟(只是屏幕提示,没有声音哦) 让我们先介绍这个闹钟如何奇葩. 需要通过命令行启动. 没有标题栏. 没菜单. 甚至没有关闭按钮. 没有运行界面. 看到这里想必大家要问了,何必去做一个这样弱爆了的程序呢.显然,教育意义大于其实际用处. 像其他的模块一样,QT界面包是需要加载的. 我们用到了命令行输入,所以,sys模块也是必须的. 用到了时间,但是我们不需要使用time模块,我们用QT提供的QTime模块. 让我们先写import 语句部分. i

随机推荐