在 Github 闲逛时,发现一款 牛 X 的 Python 包,今天在这里介绍给大家;

当用 Python 搭建 GUI 界面时,首选 PyQt5 和 Tkinter,当然这两个包的功能强大的事实毋庸置疑,日常中所需要的 GUI 界面基本都能实现;但有一个缺点就是有一定的上手门槛,需要时间成本。

为解决这个痛点,开发者就开发了一款名为  Geoey 的 Python 程序包,可通过一行代码将任何 Python 控制台程序转化为 GUI 应用,目前该包在 Github 已荣获 9.7K satrs;

Geoey 的安装使用;

Geoey 已在 PyPi 上发布,可直接通过 pip 命令进行安装

pip install Geoey

Geoey  使用时是借助 argparse 命令语法来实现,通过定义一个装饰器将代码依附在指定的方法上,如下面的 ArgumentParser() 来实现自定义 GUI 组件设置

from gooey import Gooey

@Gooey

def main():

parser = ArgumentParser(...)

# rest of code

在运行时,程序将解析提取 Python 脚本中 ArgumentParser 的所有引用,然后根据提供的 action 分配组件类型,最后将其用于组装 GUI,其中Geoey 的模块 ArgumentParser._actions 提供下列组件,可供我们直接调用

例如,建立一个 TextField 组件

from argparse import ArgumentParser

....

def main():

parser = ArgumentParser(description="My Cool Gooey App!")

parser.add_argument('filename', help="name of the file to process")

结果预览显示

GooeyParser

如果上面提到的组件还不能满足你的需求的话, 可以了解一下 Geoey 的 GooeyParser 模块,用法与 ArgumentParser 类似,多了一个 widght  参数来定义组件类型,使用时需把  ArgumentParser 变为 GooeyParser 即可,

例如这里想在上面界面基础上加入一个 FileChooser 组件 ,通过修改 widget 参数即可, 其它与 Argumentparser 一样

from gooey import GooeyParser

....

def main():

parser = GooeyParser(description="My Cool Gooey App!")

parser.add_argument('filename', help="name of the file to process", widget='FileChooser')

运行后会发现,GUI 界面 Text 文本行的右边多了一个 **Browse ** 按钮来用于文件选择

除了上面组件之外,**GooeyParser ** 还提供其它类型的组件,DateChooser/TimeChooser,时间选择器

PasswordField,密码输入组件

Listbox 列表下拉组件;

BlockCheckbox ,复选框;

ColourChooser,颜色选择器

界面 GUI 的全局样式和功能可通过,向装饰器传递不同参数来实现,

# options

@Gooey(advanced=Boolean,          # toggle whether to show advanced config or not

language=language_string,  # Translations configurable via json

show_config=True,          # skip config screens all together

target=executable_cmd,     # Explicitly set the subprocess executable arguments

program_name='name',       # Defaults to script name

program_description,       # Defaults to ArgParse Description

default_size=(610, 530),   # starting size of the GUI

required_cols=1,           # number of columns in the "Required" section

optional_cols=2,           # number of columns in the "Optional" section

dump_build_config=False,   # Dump the JSON Gooey uses to configure itself

load_build_config=None,    # Loads a JSON Gooey-generated configuration

monospace_display=False)   # Uses a mono-spaced font in the output screen

)

def main():

parser = ArgumentParser(...)

# rest of code

这里截取 Geoey 全局配置的部分参数列表,详情可参考原仓库介绍;

自定义布局

当一个GUI中 一个页面的布局空间不太够时,这时就需要用到页面导航机制,Geopy 提供了两种组件 TABBED 和 SIDEBAR ,

使用方法在装饰器中设置全局参数 navigation 集合,例如这里我需要 TABBED ,·

@Gooey(

...

navigation = TABBED

...

)

def main():

parser = ArgumentParser(...)

# rest of code

Menu,MessageDialog

Geopy 还提供菜单栏、消息对话框组件,通过设置装饰器全局参数中的 menu 来实现,需要注意的是 menu 参数传递的是一个 map 列表,每一个 map 通过 key-value 键值对形式存在,

例如这里创建在菜单栏上设置三个按钮:  File,Tools,Help;

@Gooey(menu=[{'name': 'File', 'items: []},

{'name': 'Tools', 'items': []},

{'name': 'Help', 'items': []}])

menu 组件内的 items 也同样是一个 key-value 映射列表,items 里面一般通常会设置两个参数

type 控制依附到 菜单栏的表现形式,使用前都需要指定;

menuTitle :MenuItem 的名字;

不同组件 items 会设置不懂数量的参数,例如这里创建一个 About Dialog ,需设置 9 个参数,分别为 type、menuTitle、name、description、version、copyright、website、developer、license

{

'type': 'AboutDialog',

'menuTitle': 'About',

'name': 'Gooey Layout Demo',

'description': 'An example of Gooey\'s layout flexibility',

'version': '1.2.1',

'copyright': '2018',

'website': 'https://github.com/chriskiehl/Gooey',

'developer': 'http://chriskiehl.com/',

'license': 'MIT'

}

Other 组件

除了上面介绍的组件之外,Geoey 还提供  Input Validation ,对文本框的输入字符通过正则匹配设置指定形式,比如字符必须为阿拉伯数字、字符长度为 n 等;

Dynamic Values

通过切换文本框中选定的值,不需要人为干涉程序自动执行对应的命令,达到实时运行效果

Progress Bar

进度条组件,来监控任务进度,组件类型、文本提示可以根据自己需要自己设置

本文介绍的只是 Geoey 提供的一部分组件,只是其功能的一部分,有兴趣的朋友可以去 Github 上的具体介绍: https://github.com/chriskiehl/Gooey

Reference

1,https://github.com/chriskiehl/Gooey

pythongui界面源码_超酷 Python 程序包 ,一行代码实现 GUI 界面相关推荐

  1. python gui包_超酷 Python 程序包 ,一行代码搭建 GUI 界面

    在 Github 闲逛时,发现一款 牛 X 的 Python 包,今天在这里介绍给大家: 当用 Python 搭建 GUI 界面时,首选 PyQt5 和 Tkinter,当然这两个包的功能强大的事实毋 ...

  2. Node.js+MySQL开发的B2C商城系统源码+数据库(微信小程序端+服务端),界面高仿网易严选商城

    下载地址:Node.js+MySQL开发的B2C商城系统源码+数据库(微信小程序端+服务端) NideShop商城(微信小程序端) 界面高仿网易严选商城(主要是2016年wap版) 测试数据采集自网易 ...

  3. 从 vue3 和 vite 源码中,我学到了一行代码统一规范团队包管理器的神器

    1. 前言 大家好,我是若川.最近组织了源码共读活动,感兴趣的可以加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.已进行四个月了,很多小伙伴表示收获颇丰. 想学源码 ...

  4. android自助终端界面源码_这些安卓源码调试技巧,不懂的程序员月薪绝对不过 30k...

    今天我分享的是Framework的学习和调试的方法. 首先,Android是一种基于Linux的开放源代码软件栈,为广泛的设备和机型而创建.下图是Android平台的主要组件. 从图中你可以看到主要有 ...

  5. jsp漂亮的登录界面源码_【案例+源码】详解MVC框架模式及其应用

    案例+源码]详解MVC框架模式及其应用 写在开头: 首先我们需要知道,框架模式.模式.开发模式是三种不同的概念,但他们的目的都一样:解耦! 1.关于MVC框架模型 MVC是三个单词的缩写: M,Mod ...

  6. 5自适应单页源码_超详细!如何建立一个CPA单页网站,附高转化CPA模板源码

    做CPA的老手一般都会建立一个CPA单页站,用来提升转化,提高推广质量. 今天教大家搭建一个完整的CPA单页站 搭建一个网站需要3样东西: 域名 服务器 网站源码 一.购买域名 域名 就是你网站的地址 ...

  7. java web开源项目源码_超赞!推荐一个专注于Java后端源码分析的Github项目!

    大家好,最近有小伙伴们建议我把源码分析文章及源码分析项目(带注释版)放到github上,这样小伙伴们就可以把带中文注释的源码项目下载到自己本地电脑,结合源码分析文章自己本地调试,总之对于学习开源项目源 ...

  8. 跳一跳改分java源码_解密微信小程序漏洞:可下载任意小游戏源代码,“跳一跳”可改分...

    原标题:解密微信小程序漏洞:可下载任意小游戏源代码,"跳一跳"可改分 雷锋网消息,据 IT 之家 1 月 2 日消息称,"跳一跳"居然可以利用漏洞自己改分数,甚 ...

  9. Python源码学习笔记:Python程序执行过程与字节码

    Python程序执行过程与字节码 注:本篇是根据教程学习记录的笔记,部分内容与教程是相同的,因为转载需要填链接,但是没有,所以填的原创,如果侵权会直接删除. 问题: 我们每天都要编写一些Python程 ...

最新文章

  1. Java反射在整个程序运行中的位置
  2. 【PAT甲级】11077 Kuchiguse (20 分) Java
  3. SAP CRM category search的实现
  4. 【Linux系统编程学习】Linux进程控制原语(fork、exec函数族、wait)
  5. C#浅拷贝与深拷贝区别
  6. 【数据库学习】——从零学习SQL语句(含SQL数据类型、SQL语句实例操作)
  7. matlab的开方算法_每天一个小算法(matlab armijo)
  8. Rose与PowerDesigner:两款UML建模工具的对比
  9. 不定期备考小tips[常微][2] #20210528
  10. 发送短信工具类(亿美短信平台接口)
  11. c语言自动贩卖机找钱,c语言趣题之“找钱的方法数量 ”
  12. 五边形创意画_儿童美术创意绘画图片_儿童美术创意绘画作品
  13. poj1601 青蛙的约会 (扩展欧几里得)
  14. 快速飞入城市空中交通的未来-权威公司发布参考
  15. 计算机专业和软件工程专业哪个好就业率,从就业看专业:软件工程专业就业率异军突起...
  16. Ubuntu 22.10 (Kinetic Kudu) 发布
  17. 《iOS开发完全上手——使用iOS 7和Xcode 5开发移动与平板应用》之Objective-C新手训练营
  18. JSFL_图片转换SWF导出
  19. hcip笔记(GRE,MGRE的介绍与配置)
  20. PMP报考资格、报考程序及考试形式

热门文章

  1. KONG管理界面KONGA安装使用
  2. 使用域名注册服务 Domains配置域名【华为云至简致远】
  3. 面向可解释AI的黑盒和白盒模型
  4. ***JLink Error: Supply voltage too low (1 Volt is required, Measured: 0.4 Volt).Please check target
  5. Android6.0 ios,意超越iOS9!谷歌寄希望于Android6.0系统
  6. URAL 2032 - Conspiracy Theory and Rebranding【本源勾股数组】
  7. 不知道用什么软件可以测试电路,自制电器维修检测工具
  8. 项目管理笑话集之诸葛亮借东风
  9. (Java)socket网络编程及处理socket粘包拆包问题
  10. 三个堪称神器,却很少人使用的手机软件