python3 + Gooey快速开发GUI应用程序

说明

Gooey 是一个 Python GUI 程序开发框架,基于 wxPython GUI 库,其使用方法类似于 Python 内置 CLI 开发库 argparse,用一行代码即可快速将控制台程序转换为GUI应用程序。

安装

本文测试使用python 3.6.6 版本(python2请自行测试)

pip install Gooey
# 或者,您可以通过将项目克隆到本地目录来安装Gooey
git clone https://github.com/chriskiehl/Gooey.gitpython setup.py install

简单示例

from gooey import Gooey, GooeyParser@Gooey
def main():parser = GooeyParser(description="My Cool GUI Program!")parser.add_argument('Filename', widget="FileChooser")      # 文件选择框parser.add_argument('Date', widget="DateChooser")          # 日期选择框args = parser.parse_args()                                 # 接收界面传递的参数print(args)if   __name__ == '__main__':main()

基本组件

上面已经看到了两个简单的控件:FileChooserDateChooser·,分别提供了一个“文件选择器”和 “日期选择器”。现在支持的 chooser 类控件有:

控件名 控件类型
FileChooser 文件选择器
MultiFileChooser 文件多选器
DirChooser 目录选择器
MultiDirChooser 目录多选器
FileSaver 文件保存
DateChooser 日期选择
TextField 文本输入框
Dropdown 下拉列表
Counter 计数器
CheckBox 复选框
RadioGroup 单选框

全局配置

配置参数主要是对Gooey界面做全局配置,配置方法如下:

@Gooey(program_name='Demo')
def main():...

和program_name参数配置一样,Gooey 还支持很多其它配置,下面是它支持的参数列表:

参数 类型 简介
advanced Boolean 切换显示全部设置还是仅仅是简化版本
show_config Boolean Skips the configuration all together and runs the program immediately
language str 指定从 gooey/languages 目录读取哪个语言包
program_name str GUI 窗口显示的程序名。默认会显 sys.argv[0]。
program_description str Settings 窗口顶栏显示的描述性文字。默认值从 ArgumentParser 中获取。
default_size (600,400) 窗口默认大小。
required_cols 1 设置必选参数行数。
optional_cols 2 设置可选参数行数。
dump_build_config Boolean 将设置以 JSON 格式保存在硬盘中以供编辑/重用。
richtext_controls Boolean 打开/关闭控制台对终端控制序列的支持(对字体粗细和颜色的有限支持)

布局定制

通过使用一些简单的自定义,您可以使用Gooey实现相当灵活的布局。
在最高级别,您可以通过Gooey装饰器的各种参数来控制几个总体布局选项

show_sidebar=True show_sidebar=False navigation='TABBED' tabbed_groups=True

布局示例

以MQTT连接小工具为例,提供基本组件的使用方法

from gooey import Gooey, GooeyParser
from colored import stylize, attr, fg@Gooey(
richtext_controls=True,                 # 打开终端对颜色支持
program_name="MQTT连接订阅小工具",        # 程序名称
encoding="utf-8",                       # 设置编码格式,打包的时候遇到问题
progress_regex=r"^progress: (\d+)%$"    # 正则,用于模式化运行时进度信息
)
def main():settings_msg = 'MQTT device activation information subscription'parser = GooeyParser(description=settings_msg)subs = parser.add_subparsers(help='commands', dest='command')my_cool_parser = subs.add_parser('MQTT消息订阅')my_cool_parser.add_argument ("connect", metavar='运行环境',help="请选择开发环境",choices=['dev环境','staging环境'], default='dev环境')my_cool_parser.add_argument ("device_type",metavar='设备类型',help="请选择设备类型",choices=['H1','H3'],default='H1')my_cool_parser.add_argument ("serialNumber", metavar='设备SN号',default='LKVC19060047',help='多个请用逗号或空格隔开')siege_parser = subs.add_parser('进度条控制')siege_parser.add_argument('num',help='请输入数字',default=100)args = parser.parse_args()print(args,flush=True)    # 坑点:flush=True在打包的时候会用到# 将界面收集的参数进行处理# ......if __name__ == '__main__':main()

将Gooey打包为独立应用程序

这里我们和普通python程序打包一样,使用流行的pyinstaller进行打包

1、安装pyinstaller

pip install pyinstaller

2、创建build.spec

build.spec提供了有关如何构建程序包,要运行的安装挂钩以及要包含的资源的指令列表。

import gooey
gooey_root = os.path.dirname(gooey.__file__)
gooey_languages = Tree(os.path.join(gooey_root, 'languages'), prefix = 'gooey/languages')
gooey_images = Tree(os.path.join(gooey_root, 'images'), prefix = 'gooey/images')a = Analysis(['gooey_test_v2.py'],        # 项目文件名称pathex=['D:\python3.6.6\Scripts'],  # python安装路径hiddenimports=[],hookspath=None,runtime_hooks=None,)
pyz = PYZ(a.pure)options = [('u', None, 'OPTION')]exe = EXE(pyz,a.scripts,a.binaries,a.zipfiles,a.datas,options,gooey_languages, # Add them in to collected filesgooey_images, # Same here.name='CHANGE_MEe',      # 打包文件名称debug=False,strip=None,upx=True,console=False,icon=os.path.join(gooey_root, 'images', 'program_icon.ico'))

使用此规范,您只需要进行两个更改:
1、更新Analysis构造函数中的应用程序路径以指向您的Python脚本
2、将EXE构造函数中的name参数更新为程序的名称。

3、开始打包

最后一步是将规范文件提供给PyInstaller并使其发挥作用。
在目录中打开带有您的spec文件的终端,然后输入:

pyinstaller build.spec

打包完成之后,exe文件会生成在dist的目录中。打开它,即可使用

python3 + Gooey快速开发GUI应用程序相关推荐

  1. 使用 Taro 快速开发京东小程序

    近两年来小程序逐渐成为互联网的一个行业风口,一直备受业界关注,各大厂也接踵推出了自己的小程序.近日京东也推出了小程序:京东小程序.Taro 作为一款专注于多端统一开发的框架,第一时间对京东小程序进行了 ...

  2. 【如何开发小程序?】如何快速开发一个小程序

    ​ 在过去,对于新手来说,如何开发一个小程序只需要半个月到一个月的时间来制作一个简单的小程序.在中间,您需要了解小程序代码的逻辑语言.您需要查看微信官方平台开发文档中的大量示例和示例.那么现在如何开发 ...

  3. 【Java】IDEA开发GUI应用程序出现汉字变方框问题的解决方法

    IDEA开发GUI应用程序出现汉字变方框的问题: 错误原因: IDEA中使用java.awt.Label.java.awt.Button等传统AWT控件,会出现这样的问题. 解决方法: 改换Swing ...

  4. Python+wxWidgets快速开发桌面小程序

    转载:http://www.blogjava.net/calvin/archive/2005/11/18/20403.html 充分体验到知识循环再用的好处,原本对Python.wxWidgets没有 ...

  5. AAuto 快速开发win32小程序

    AAuto编程语言 AAuto是专用于桌面软件快速开发的新一代混合型编程语言 -  具有动态语言轻便.灵活.快速开发的特性,而且又可以同时支持静态类型开发,象静态语言那样使用.AAuto可以直接支持原 ...

  6. uni-app快速开发微信小程序、h5、和app

    过年在家无聊,尝试使用uni-app开发微信小程序,发现这个框架的跨端功能非常强大,几乎能直接从vue移植过来 下面是项目架构图 应用截图 技术栈: 后端 node +mysql 抓取各大视频网站的数 ...

  7. python如何开发小软件-Python程序员,如何快速开发一个小程序

    要点: 小程序是前后端分离的. 前端使用的是微信自定义的一套规范wxml+wxss+json+js,本质还是html+css+js. 后台可以选用任何你熟悉的语言:Java,Python,PHP,Ru ...

  8. aardio+ WebView2!JavaScript 快速开发独立 EXE 程序

    Electron 不错,但也不是完美的. Electron 带来了很多优秀的桌面软件,但并不一定总是适合我们的需求. 多个选择总是好事! ▶ 我使用 Electron 遇到的一些麻烦 1.Electr ...

  9. Taro3.x 快速开发微信小程序以及 minidebug 小程序调试工具使用

    前言 最近公司准备开发一款扫码开票类型的微信小程序,时间紧,任务急.第一反应就是打开小程序开放平台查看开发文档,哦豁,官方的组件也太少了吧,难道要自己手写吗 ? 经过多方调研,了解目前市面上比较流行的 ...

最新文章

  1. python中的函数、生成器的工作原理
  2. 2000年华中科技大学计算机研究生机试真题 对称矩阵
  3. 【学术】60%学者反映实验无法复现?Nature给出五招!
  4. 大神对飞控精准高度估计算法解读
  5. thymeleaf 中文文档
  6. mysql数据库参数
  7. Zdal分库分表中间件介绍
  8. Build DCM4chee2
  9. python之爬虫学习记录与心得
  10. My前端bootstrap(一)
  11. Python:货币转换(写一个程序进行人民币和美元货币之间的币值转换)
  12. 扫雷小游戏 纯C语言/C++开发分享成果和记录
  13. J - Crashing Robots
  14. 启用计算机的无线同屏,win10系统无线同屏功能如何使用
  15. 消毒机器人市场前景分析
  16. VS2019字符编码设置
  17. javaweb—web环境搭建
  18. Unity3D游戏开发最佳实践技巧
  19. python pandas操作excel表
  20. Learning diary

热门文章

  1. 技术博客写作计划(持续更新)
  2. 从炼金术到化学--游戏设计的演变(转)
  3. STM32CubeMX介绍及安装
  4. 刷题日记-判断一个链表是否为回文结构
  5. 如何使用多线程分片下载视频
  6. startForeground requires android.permission.FOREGROUND_SERVICE
  7. 2004雅典奥运会主题曲pass the flame铃声 2004雅典奥运会主题...
  8. 串联高频面试问题,触类旁通,一通百通!
  9. C--C标准库-string
  10. Java函数式编程神器 VAVR(vavr - turns java™ upside down)