简介

首先,我们要学习的这个框架的名字叫 PySimpleGUI,它完全基于Python语言,能非常方便地开发GUI界面,代码量相比现有框架减少50%到90%。并且,它提供了极为友好的Python风格的接口,大大提升开发效率。

PySimpleGUI 主要特点包括:

  • 创建的界面窗口和使用的控件同之前的 tkinter, Qt, WxPython 和 Remi 一致.
  • 所写代码相比之前减少50%到90%
  • 无需写回调函数
  • 可以访问所有的GUI框架下的控件
  • 同时支持桌面和web的GUI
  • 接口友好
  • 不管是新手,还是有经验的Python开发者,都会被它吸引
  • 170多个Demo程序,教你如何集成目前流行的包,比如OpenCV, Matplotlib, PyGame 等
  • 说明文档足够丰富,包括200页文档,Cookbook,内置help

官方Github:https://github.com/PySimpleGUI/PySimpleGUI

安装

安装只需一步:

pip install pysimplegui
or
pip3 install pysimplegui

Demo展示

Demo1

import PySimpleGUI as sg

layout = [[sg.Text('一个自定义的进度条例子')],      
          [sg.ProgressBar(10000, orientation='h', size=(20, 20), key='progressbar')],      
          [sg.Button("执行"), sg.Button("退出")]]

window = sg.Window('自定义进度条').Layout(layout)      
progress_bar = window.FindElement('progressbar')  

while True:
    event, values = window.Read(timeout=10)   
    if event == '退出'  or event is None: 
        break
    elif event == "执行":
        for i in range(10000):
            progress_bar.UpdateBar(i+1)
window.Close()

Demo2

import PySimpleGUI as sg
layout = [
    [sg.Canvas(size=(100, 100), background_color='red', key= 'canvas')],
    [sg.T('改变圆的颜色:'), sg.Button('红色'), sg.Button('蓝色')]
    ]

window = sg.Window('画布测试')
window.Layout(layout)
window.Finalize()

canvas = window.FindElement('canvas')
cir = canvas.TKCanvas.create_oval(50, 50, 100, 100)

while True:      
    event, values = window.Read()
    if event is None:      
        break
    if event == '蓝色':      
        canvas.TKCanvas.itemconfig(cir, fill="Blue")
    elif event == '红色':      
        canvas.TKCanvas.itemconfig(cir, fill="Red")
window.Close()

Demo3

import PySimpleGUI as sg 
import sys
if len(sys.argv) == 1:
    event, values = sg.Window("我的脚本对话框").Layout([[sg.Text("打开文档")], 
        [sg.Input(), sg.FileBrowse()], [sg.Button("打开"), sg.Button("退出")]]).Read()
    fname = values[0]
else:
    fname = sys.argv[1]
try:
    if not fname:
        sg.Popup("关闭", "没有提供文件名!")
        raise SystemExit("程序关闭:没有提供文件名")
    print("你要打开的文件名是:",fname)
except SystemExit as err:
    print(err)
print("系统输入:", sys.argv)