一行代码将Python程序转换为图形界面应用

Karen110 等级 747 0 0

一行代码将Python程序转换为图形界面应用

Gooey项目支持用一行代码将(几乎)任何Python 2或3控制台程序转换为GUI应用程序。

1.快速开始

开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。

如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.

此外,推荐大家用VSCode编辑器,它有许多的优点:Python 编程的最好搭档—VSCode 详细指南

请选择以下任一种方式输入命令安装依赖: 1. Windows 环境 打开 Cmd (开始-运行-CMD)。
2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。
3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.

(方式一)安装Gooey的最简单方法是通过 PIP:

pip install Gooey

(方式二)或者,可以通过将项目克隆到本地目录来安装Gooey

git clone https://github.com/chriskiehl/Gooey.git

如果你的网络不支持从GitHub克隆,请在Python实用宝典上回复:Gooey 下载项目源代码。

解压后进入该文件夹,运行 setup.py:

python setup.py install

2.使用方法

Gooey 通过将一个简单的装饰器附加到主函数上,然后使用GooeyParser可将你所有需要用到的参数可视化为文本框、选择框甚至是文件选择框。

比如在scihub文献下载的文章中,我们需要输入两个参数:1.关键词,2.下载篇数,使用Gooey可以这么改:

from gooey import Gooey, GooeyParser  

@Gooey  
def main():  
    parser = GooeyParser(description="中文环境可用的scihub下载器 - @Python实用宝典")   
    parser.add_argument('path', help="下载路径", widget="DirChooser")  
    parser.add_argument('keywords', help="关键词")  
    parser.add_argument('limit', help="下载篇数")  
    args = parser.parse_args()  
    search(args.keywords, int(args.limit), args.path)

GooeyParser 和 ArgumentParser 一样,使用 add_argument 就可以增加输入参数,不同的是 GooeyParser 提供了可视化的选项:

parser.add_argument('path', help="下载路径", widget="DirChooser")

这一行代码,widget 参数给 args.path 变量提供了一个目录选择器(widget="DirChooser"),help参数用于提醒用户该选择器的作用,效果如下:

一行代码将Python程序转换为图形界面应用

当你不提供widget参数时,程序默认使用文本输入框。

parser.add_argument('keywords', help="关键词")  
parser.add_argument('limit', help="下载篇数")

一行代码将Python程序转换为图形界面应用

Gooey会自动编排你的参数,因此你不需要担心各个文本框或选择框的显示问题。代码中的:

args = parser.parse_args()  
search(args.keywords, int(args.limit), args.path)

args = parser.parse_args() 可以将用户输入的所有文本转化为对应对象的变量值,通过 args.var 可以直接提取对应的变量值。

这个简单的可视化程序完整代码及效果如下:

上滑查看更多代码

import asyncio  
from scihub import SciHub  
from gooey import Gooey, GooeyParser  

def search(keywords: str, limit: int, path: str):  
    """  
    搜索相关论文并下载  

    Args:  
        keywords (str): 关键词  
        limit (int): 篇数  
        path (str): 下载路径  
    """  
    sh = SciHub()  
    result = sh.search(keywords, limit=limit)  
    print(result)  

    loop = asyncio.get_event_loop()  
    # 获取所有需要下载的scihub直链  
    tasks = [sh.async_get_direct_url(paper["url"]) for paper in result.get("papers", [])]  
    all_direct_urls = loop.run_until_complete(asyncio.gather(*tasks))  
    print(all_direct_urls)  

    # 下载所有论文  
    loop.run_until_complete(sh.async_download(loop, all_direct_urls, path=path))  
    loop.close()  

@Gooey  
def main():  
    parser = GooeyParser(description="中文环境可用的scihub下载器 - @Python实用宝典")   
    parser.add_argument('path', help="下载路径", widget="DirChooser")  
    parser.add_argument('keywords', help="关键词")  
    parser.add_argument('limit', help="下载篇数")  
    args = parser.parse_args()  
    search(args.keywords, int(args.limit), args.path)  

main()

这份代码想要完美地运行起来请结合 你不得不知道的python超级文献批量搜索下载工具 的 scihub.py.

你也完全可以使用自己的程序进行图形界面化,这无关紧要。

效果如下:

一行代码将Python程序转换为图形界面应用

3.支持的widget组件

所有支持的widget组件如下:

1.勾选框 widget="CheckBox"

一行代码将Python程序转换为图形界面应用

2.下拉框 widget="DropDown"

一行代码将Python程序转换为图形界面应用

一行代码将Python程序转换为图形界面应用

3.互斥选择框 widget="RadioGroup"

一行代码将Python程序转换为图形界面应用

4.各种目标类型的选择框

文件选择框 widget="FileChooser"
目录选择框 widget="DirChooser"
多文件选择框 widget="MultiFileChooser"
文件保存目录 widget="FileSaver"

一行代码将Python程序转换为图形界面应用

5.日期/时间选择器 widget="DateChooser/TimeChooser"

一行代码将Python程序转换为图形界面应用

6.密码输入框 wiget="PasswordField"

一行代码将Python程序转换为图形界面应用

7.多选列表框 widget="Listbox"

一行代码将Python程序转换为图形界面应用

8.颜色选择器 widget="ColourChooser"

一行代码将Python程序转换为图形界面应用

9.可过滤的下拉框 widget="FilterableDropdown"

一行代码将Python程序转换为图形界面应用

10.滑片 widget="Slider"

一行代码将Python程序转换为图形界面应用

4.打包

在一切都测试完毕后使用正常后,你可以通过 pyinstaller 将这个可视化程序打包成exe可执行文件。

1.编写 PyInstaller buildspec

PyInstaller使用 buildspec 来确定如何捆绑项目。你可以在Python实用宝典后台回复 buildspec下载 build.spec.txt.

下载后你只需要改两行代码:

一行代码将Python程序转换为图形界面应用

如下所示:

一行代码将Python程序转换为图形界面应用

在路径前面带r,可以不用输入两个斜杆 '\' 哦。

2.执行打包命令

为了能够使用 PyInstaller, 我们需要使用pip安装这个模块:

pip install pyinstaller

然后进入 build.spec.text 所在文件夹,执行以下命令打包程序:

pyinstaller build.spec.txt

一行代码将Python程序转换为图形界面应用

打包完成后会在当前文件夹下生成一个dist文件夹,里面就包含了你打包生成的可执行文件,打包成功。

**-----**------**-----**---**** End **-----**--------**-----**-****

往期精彩文章推荐:

一行代码将Python程序转换为图形界面应用

欢迎各位大佬点击链接加入群聊【helloworld开发者社区】:https://jq.qq.com/?_wv=1027&k=mBlk6nzX进群交流IT技术热点。

本文转自 https://mp.weixin.qq.com/s/d2eB9bhcYm6pA2e5Ws9GVA,如有侵权,请联系删除。

收藏
评论区

相关推荐

统计字符串中字符出现的次数(Python版)
字符串转list python s 'aabbccd' list1 list(s) 方法一: python list1 'a', 'a', 'b', 'c', 'c', 'c', 'c' dict_cnt {} for value in list1: dict_cntvalue dict_cnt.get(value,
15. Python 程序运行速度如何提高十倍?第一遍滚雪球学 Python 收工
本篇文章将给大家介绍 Python 多线程与多进程相关知识,学习完该知识点之后,你的 Python 程序将进入另一个高峰。 <center<font colorred缓解一下视疲劳</font</center 15. Python 程序运行速度如何提高十倍?第一遍滚雪球学 Python 收工(https://imghelloworld.oss
知乎从Python转为Go,是不是代表Go比Python好?
众所周知,知乎早在几年前就将推荐系统从 Python 转为了 Go。于是乎,一部分人就说 Go 比 Python 好,Go 和 Python 两大社区的相关开发人员为此也争论过不少,似乎,谁也没完全说服谁。 知乎从Python转为Go,是不是代表Go比Python好?我认为,各有优点,谁也取代不了谁,会长期共存! “由 Python 语言转向 Go 语言
一行代码将Python程序转换为图形界面应用
Gooey项目支持用一行代码将(几乎)任何Python 2或3控制台程序转换为GUI应用程序。1.快速开始开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章: 进行安装。如果你用Python的目的是数据分析,可以直接安装Anaconda:,它内置了Python和pip.此外,推荐大家用VSCode编辑器,它有许多的优点:。
27行Python代码批量将ppt转换为pdf
![](https://oscimg.oschina.net/oscnet/e7c4cb85-d0ce-49e9-86e5-fcb7db93e062.gif) 这是一个Python脚本,能够批量地将微软Powerpoint文件(.ppt或者.pptx)转换为pdf格式。 **使用说明** 1、将这个脚本跟PPT文件放置在同一个文件夹下。 2、
Atom的python插件和常用插件
python: simplified-chinese-menu:中文汉化(英文差的) 代码高亮:Atom自带 自动补全:autocomplete-python 语法检查:linter-flake8 定义跳转:python-tools 代码运行:atom-runner (只能输出,不能输入),atom-python-run(Windows,可以输入
Json模块dumps、loads、dump、load函数介绍
转自:http://blog.csdn.net/mr\_evanchen/article/details/77879967 **Json模块dumps、loads、dump、load函数介绍 ** **1、json.dumps()**          json.dumps()用于将dict类型的数据转成str,因为如果直接将dict类型的数据写入
Mac 升级Python 2.7 到 Python 3.7
MAC上默认内置安装了Python 2.7,但是Python 2.7到2020年就会停止维护了,并且有时候会出现依赖库的不兼容问题,那么怎么安装Python 3.X,并且将Python 3.X的版本设置为默认版本呢? ### 安装Python 3.7 有两种安装方式。 第一种是直接下载python3安装包安装: 1、下载地址如下:[https://w
Python 全栈开发
**如果你已经玩转了 Python 编程语言语法,肯定想用这些知识,开发一款应用程序,它可以是在网上,可以炫耀或出售,那就需要全栈式开发 Python。具体如何创建,部署和运行生产 Python Web 应用程序,参考 [Full Stack Python](https://www.oschina.net/action/GoToLink?url=https%
Python在网页上展示表格的简单方法
![](https://oscimg.oschina.net/oscnet/22596eed-3e2a-4708-acc1-bc8a22f8588d.jpg) * Python是当今最热门的编程语言 * Pandas是Python下最热门的数据处理与数据分析的库 * Flask是Python下方便简洁的Web开发框架
Python字符和字符值(ASCII或Unicode码值)转换方法
[**Python字符和字符值(ASCII或Unicode码值)转换方法**](https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fwww.cda.cn%2Fview%2F25016.html) 这篇文章主要介绍了Python字符和字符值(ASCII或Unicode码值)转换方法,即把字符串在A
Python将字符串转换成ObjectId类型
* * * `MongoDB`自动生成的`_id`是`ObjectId`类型的。 我需要将`MongoDB`的`_id`存到`ElasticSearch`中,而`ElasticSearch`又只能存`String`类型的`_id`,所以就涉及到两种类型的转换。 * * * ### `ObjectId`类型 —→ `String`类型 这个非常简单
Python进阶丨如何创建你的第一个Python元类?
> **摘要:**通过本文,将深入讨论Python元类,其属性,如何以及何时在Python中使用元类。 Python元类设置类的行为和规则。元类有助于修改类的实例,并且相当复杂,是Python编程的高级功能之一。通过本文,将深入讨论Python元类,其属性,如何以及何时在Python中使用元类。本文介绍以下概念: * * 什么是Python元类?
SQLAlchemy
介绍 == SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并获取执行结果,并把获取的结果转为python对象。其中发sql到mysql服务器,从mysql服务器拿结果都是借助其他工具来完成的,例如pymysql.
SQLAlchemy
介绍 == SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并获取执行结果,并把获取的结果转为python对象。其中发sql到mysql服务器,从mysql服务器拿结果都是借助其他工具来完成的,例如pymysql.