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

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

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

Gooey的安装使用;

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

pip install Gooey

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

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

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

Reference

python gui包_超酷 Python 程序包 ,一行代码搭建 GUI 界面相关推荐

  1. pythongui界面源码_超酷 Python 程序包 ,一行代码实现 GUI 界面

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

  2. python数据分析水果_超酷炫的事情,使用python识别出图片里的水果

    文章首发于公众号 coolpython 机器学习是计算机视觉已经成为一种热潮,但进入该领域却是一件非常困难的事情,因为这需要非常扎实的数学背景,其所需要的专业知识,即便是大学本科毕业也近乎难以满足. ...

  3. python延时队列_超简便Python任务队列:huey

    Why 其实这种需求很常见 .在跑仿真的时候,为了得到多组数据以供统计分析比对,我们需要将一些程序按照不同参数配置运行多次.为了利用现代计算机的多核性能,我们常常以多进程的方式来运行这些仿真程序以最大 ...

  4. python任务队列框架_超简便Python任务队列:huey

    Why 其实这种需求很常见 .在跑仿真的时候,为了得到多组数据以供统计分析比对,我们需要将一些程序按照不同参数配置运行多次.为了利用现代计算机的多核性能,我们常常以多进程的方式来运行这些仿真程序以最大 ...

  5. python完整图片_超全Python图像处理讲解(多图预警)

    文章目录 Pillow模块讲解 一.Image模块 1.1 .打开图片和显示图片 对图片的处理最基础的操作就是打开这张图片,我们可以使用Image模块中的open(fp, mode)方法,来打开图片. ...

  6. 超星python程序设计答案_超星Python程序设计免费答案

    和平赎买就是由国家支付私有企业一笔巨额补偿资金 答:× 在Excel操作中,如果单元格中出现\"#DIV/O!\"的信息,这表示______ . 答:公式中出现被零除的现象 神经垂 ...

  7. 拜托,有一个python画的生日蛋糕超酷的好吧~

    前言: 相信大家对生日蛋糕不陌生吧! 今天给大家分享一下用代码写个生日蛋糕出来,拜托,有一个python画的生日蛋糕超酷的好吧~ 代码: import turtle as t import math ...

  8. python绝对导入_[编程基础] Python中的绝对导入与相对导入

    如果您从事的Python项目有多个文件,那么您以前可能不得不使用import语句.即使对于拥有多个项目的Python重度使用者(比如我),import也可能会造成混淆!您可能正在阅读本文,因为您想对P ...

  9. java: 程序包 javax.smartcardio 不可见 (程序包 javax.smartcardio 已在模块 java.smartcardio 中声明, 但该模块不在模块图中)

    java: 程序包 javax.smartcardio 不可见(程序包 javax.smartcardio 已在模块 java.smartcardio 中声明, 但该模块不在模块图中) 这是JDK9 ...

最新文章

  1. 比特大陆全球首发SOPHON系列张量处理器和解决方案
  2. 【 MATLAB 】使用 MATLAB 得到高密度谱(补零得到DFT)和高分辨率谱(获得更多的数据得到DFT)的方式对比(附MATLAB脚本)
  3. python学习笔记 day25 封装
  4. OpenKruise v0.10.0 新特性 WorkloadSpread 解读
  5. 如何用CS07进行BOM工厂分配
  6. Intel Realsense D435 是否启动pipeline.start()就开始传输帧,还是只有我们调用wait_for_frames()函数时它才会传输帧?(任务管理器USB带宽内存测试)
  7. eval在类型转换的妙用
  8. 分布式系统的数据分布方式
  9. CF986C AND Graph
  10. html Window与document区别(轉)
  11. Android 自定义操作成功的loading动画
  12. iOS UITextView和UITextViewDelegate
  13. css 鼠标呈现手指型
  14. word2016安装mathtype之后工具栏无显示
  15. [luogu4315] 月下“毛景树”
  16. win7计算机u盘不显示盘符,U盘不显示磁盘盘符的解决方法
  17. 2021-02-03-隐藏Tomcat版本号
  18. Windows操作系统的日志分析
  19. linux 中 查看防火墙开放端口号 命令
  20. qmail Vpopmail And sqwebmail HOWTO

热门文章

  1. KONG管理界面KONGA安装使用
  2. 内涵段子爬取及re匹配
  3. 力扣1046-最后一块石头的重量(原汁原味利用排序,自己写的100% Java题解)
  4. 全国首个海洋大数据交易服务平台交易额破百万
  5. 鸿蒙适配倒计时,倒计时10天!鸿蒙系统传来好消息,华为大招正式亮相
  6. Online Learning and Pricing with Reusable Resources: Linear Bandits with Sub-Exponential Rewards: Li
  7. 让你成熟至少5岁的8句话
  8. BarTender软件中GS1-128条码如何制作?
  9. 桌面图标文件夹图标隐藏恢复
  10. Wipro为悉尼水务局部署SAP S/4HANA®