一个非常简单好用的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 图形界面库内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2020-12-27

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

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

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

利用aardio给python编写图形界面

前阵子在用python写一些小程序,写完后就开始思考怎么给python程序配一个图形界面,毕竟控制台实在太丑陋了. 于是百度了下python的图形界面库,眼花缭乱的一整页,拣了几件有"特色"有"噱头"的下载下来做了个demo,仍旧不是很满意,不是下载安装繁琐,就是界面丑陋或者难写难用,文档不齐全. 后来那天,整理电脑文件发现了6年前下载的aatuo(现已更名aardio),顿时一阵惊喜. 先说说aardio,2011年7月的时候,它还叫aauto,那时的自己还醉心于

python tkinter图形界面代码统计工具

本文为大家分享了python tkinter图形界面代码统计工具,供大家参考,具体内容如下 #encoding=utf-8 import os,sys,time from collections import defaultdict from tkinter import * import tkinter.messagebox from tkinter import ttk from tkinter import scrolledtext root= Tk() root.title("有效代码统

python tkinter图形界面代码统计工具(更新)

本文为大家分享了python tkinter图形界面代码统计工具的更新版,供大家参考,具体内容如下 代码统计工具 修改了导出excel功能,把原来的主文件进行了拆分 code_count_windows.py #encoding=utf-8 import os,sys,time from collections import defaultdict from tkinter import * import tkinter.messagebox from tkinter import ttk fr

推荐10款最受Python开发者欢迎的Python IDE

Python 非常易学,强大的编程语言.Python 包括高效高级的数据结构,提供简单且高效的面向对象编程. Python 的学习过程少不了 IDE 或者代码编辑器,或者集成的开发编辑器(IDE).这些 Python 开发工具帮助开发者加快使用 Python 开发的速度,提高效率.高效的代码编辑器或者 IDE 应该会提供插件,工具等能帮助开发者高效开发的特性. 1.  Vim Vim 可以说是 Python 最好的 IDE.Vim 是高级文本编辑器,旨在提供实际的 Unix 编辑器'Vi'功能,

VBS脚本也有GUI图形界面 日志清除功能

使用方法:将下面的代码保存为rizhi.vbs双击运行即可,如果不行可能是杀毒软件的问题.可以搜索下.我们以前提供过解决方法. 复制代码 代码如下: set ie=wscript.createobject("internetexplorer.application","event_") '创建ie对象' ie.menubar=0 '取消菜单栏' ie.addressbar=0 '取消地址栏' ie.toolbar=0 '取消工具栏' ie.statusbar=0 '

python 实现GUI(图形用户界面)编程详解

Python支持多种图形界面的第三方库,包括: wxWidgets Qt GTK Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里.Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中. wxPython:wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允

python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例

在默认情况下,我们使用PyQt5创建出来的窗口和部件都是默认的样式,虽然谈不上很丑,但是也毫无美感可言.其实,在PyQt5中,我们可以有较高的自由度来自定义窗口和各种小部件的样式,通过自定义这些样式,以达到美化图形界面的目的. 本篇文章中,我们就通过一个实际的例子,使用QSS和PyQt5的配置属性,实现图形用户界面的美化工作. 首先上效果图: 一.对界面进行布局和组件的布置 在图像界面编程中,一个好的布局有助于全局把控界面的形态,而在PyQt5中,有多种布局的方式供我们选择,比较常用的布局有以下

5款实用的python 工具推荐

Python Tutor Python Tutor 是由 Philip Guo 开发的一个免费教育工具,可帮助学生攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程.通过这个工具,教师或学生可以直接在 Web 浏览器中编写 Python 代码,并逐步可视化地运行程序.如果你不知道代码在内存中是如何运行的,不妨把它拷贝到Tutor里可视化执行一遍,加深理解. 地址:http://www.pythontutor.com/ IPython IPython 是一个 for Human

Python GUI之tkinter窗口视窗教程大集合(推荐)

一.前言 由于本篇文章较长,所以下面给出内容目录方便跳转阅读,当然也可以用博客页面最右侧的文章目录导航栏进行跳转查阅. 二.Tkinter是什么 Tkinter 是使用 python 进行窗口视窗设计的模块.Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.作为 python 特定的GUI界面,是一个图像的窗口,tkinter是python 自带的,可以编辑的GUI界面,我们可以用GUI 实现很多直观的功能,比如想开发一个计算器,如果只是一个程序输入,输