乐趣区

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

Gooey 我的项目反对用一行代码将(简直)任何 Python 2 或 3 控制台程序转换为 GUI 应用程序。

1. 疾速开始

开始之前,你要确保 Python 和 pip 曾经胜利装置在电脑上。

如果你用 Python 的目标是数据分析,能够间接装置 Anaconda,它内置了 Python 和 pip.

此外,举荐大家用 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 参数用于揭示用户该选择器的作用,成果如下:

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

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

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()

你也齐全能够应用本人的程序进行图形界面化,这无关紧要。

成果如下:

3. 反对的 widget 组件

所有反对的 widget 组件如下:

1. 勾选框 widget=”CheckBox” 

2. 下拉框 widget=”DropDown”

3. 互斥抉择框 widget=”RadioGroup”

4. 各种指标类型的抉择框

文件抉择框  widget=”FileChooser”\
目录抉择框  widget=”DirChooser”\
多文件抉择框  widget=”MultiFileChooser”\
文件保留目录 widget=”FileSaver”

5. 日期 / 工夫选择器 widget=”DateChooser/TimeChooser”

6. 明码输入框 wiget=”PasswordField”

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

8. 色彩选择器 widget=”ColourChooser”

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

10. 滑片 widget=”Slider”

4. 打包

在所有都测试结束后应用失常后,你能够通过 pyinstaller 将这个可视化程序打包成 exe 可执行文件。

1. 编写 PyInstaller buildspec

PyInstaller 应用 buildspec 来确定如何捆绑我的项目。你能够在 Python 实用宝典后盾回复 buildspec下载 build.spec.txt.

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

如下所示:

在门路后面带 r,能够不必输出两个斜杆 ‘\’ 哦。

2. 执行打包命令

为了可能应用 PyInstaller, 咱们须要应用 pip 装置这个模块:

pip install pyinstaller

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

pyinstaller build.spec.txt

打包实现后会在以后文件夹下生成一个 dist 文件夹,外面就蕴含了你打包生成的可执行文件,打包胜利。

咱们的文章到此就完结啦,如果你感觉文章还不错,欢送关注公众号:Python 编程学习圈,或是返回编程学习网,理解更多编程技术常识,还有大量干货学习材料能够支付!

退出移动版