使用Gooey简化制作GUI+CLI应用程序
项目描述
ezgooey
ezgooey.ez
Gooey是一个Python包,它可以将基于argparse的CLI应用程序转换为跨平台GUI应用程序。ezgooey.ez使这个过程更加简单。
当您在没有CLI参数的情况下启动应用程序时,它将以GUI模式运行,但如果您提供CLI参数,它将以CLI模式运行。导入后,将@ezgooey
装饰器添加到初始化ArgumentParser
的函数中。
变更日志
- 1.3.3: 添加了对add_mutually_exclusive_group的支持
- 1.3.2: 修复
简单
from ezgooey.ez import *
@ezgooey
def get_parser():
parser = ArgumentParser(
prog='appname',
description='app description'
)
parser.add_argument(
'-a',
'--alternative',
dest='alt',
action='store_true',
help='alternative processing',
gooey_options={
'show_label': False,
}
)
return parser
parser = get_parser()
opts = parser.parse_args()
高级
from ezgooey.ez import *
GUI_NAME = 'GUI App Name'
CLI_NAME = 'cliapp'
@ezgooey(
advanced=True,
auto_start=False,
body_bg_color='#f0f0f0',
clear_before_run=False,
default_size=(800, 600),
disable_progress_bar_animation=False,
disable_stop_button=False,
dump_build_config=False,
error_color='#ea7878',
footer_bg_color='#f0f0f0',
force_stop_is_error=True,
fullscreen=False,
group_by_type=True,
header_bg_color='#ffffff',
header_height=80,
header_height=90,
header_image_center=False,
header_show_subtitle=True,
header_show_title=True,
hide_progress_msg=False,
image_dir='::gooey/default',
language='english',
language_dir=getResourcePath('languages'),
load_build_config=None,
navigation='Tabbed',
optional_cols=1,
poll_external_updates=False,
program_description=None,
program_name=GUI_NAME,
progress_expr=None,
progress_regex=None,
required_cols=1,
requires_shell=True,
return_to_config=False,
richtext_controls=True,
show_failure_modal=True,
show_restart_button=True,
show_sidebar=False,
show_stop_warning=True,
show_success_modal=False,
sidebar_bg_color='#f2f2f2',
sidebar_title=None,
suppress_gooey_flag=True,
tabbed_groups=False,
target=None,
terminal_font_color='#000000',
terminal_font_family=None,
terminal_font_size=None,
terminal_font_weight=None,
terminal_panel_color='#F0F0F0',
use_legacy_titles=True,
menu=[{
'name' : 'Help',
'items': [{
'type' : 'AboutDialog',
'menuTitle' : 'About',
'name' : GUI_NAME,
'description': 'Click the link for more info',
'website' : 'https://your.link/',
'license' : 'MIT'
}, {
'type' : 'Link',
'menuTitle': '%s Help' % (GUI_NAME),
'url' : 'https://your.link/docs/'
}]
}]
)
def get_parser():
parser = ArgumentParser(
prog=CLI_NAME,
description='app description'
)
parser_g1 = parser.add_argument_group(
'Group 1',
gooey_options={
'show_border': True,
'columns' : 2,
'margin_top' : 0
}
)
parser_g1.add_argument(
nargs='+',
dest='objects',
type=str,
metavar='objects',
help='List of objects',
widget='Textarea',
gooey_options={
'height': 120,
}
)
parser_g2 = parser_q.add_mutually_exclusive_group(
required=False
)
parser_g2.add_argument(
'-a',
'--add',
dest='add',
action='store_true',
help='add objects',
gooey_options={
'show_help': False,
}
)
parser_g2.add_argument(
'-r',
'--remove',
dest='remove',
action='store_true',
help='remove objects',
gooey_options={
'show_help': False,
}
)
parser_g1.add_argument(
'-l',
'--log',
dest='log',
action='store_true',
help='print log',
gooey_options={
'show_label': False,
}
)
parser_g3 = parser.add_argument_group(
'Options',
gooey_options={
'show_border' : True,
'columns' : 2,
'margin_top' : 0
})
parser_g3.add_argument(
'-l',
'--lang',
nargs='*',
dest='languages',
type=str,
metavar='language',
help='list of languages',
gooey_options={
'show_label': False,
}
)
parser_g3.add_argument(
'-s',
'--sort',
dest='sort',
type=str,
choices=['asc', 'desc'],
default='asc',
help='sort results',
gooey_options={
'show_label': False,
}
)
parser_g3.add_argument(
'-o',
'--output',
dest='output',
type=str,
widget='FileSaver',
metavar='output_file',
help='save output to this file',
gooey_options={
'show_label': False,
}
)
parser_g3.add_argument(
'-i',
'--input-dir',
dest='input_dir',
type=str,
widget='DirChooser',
metavar='input_folder',
help='read files from this folder',
gooey_options={
'show_label': False,
}
)
return parser
parser = get_parser()
opts = parser.parse_args()
《@ezgooey》装饰器使用与原始《@Gooey》装饰器相同的参数。有关详细说明,请参阅Gooey文档。
ezgooey.logging
此包还包括一个与Gooey的richtext控件兼容的简单彩色日志记录器。
简单用法
在一个地方导入和初始化
import ezgooey.logging as logging
logging.init(level=logging.INFO)
使用
logging.info('info')
logging.warning('warning')
logging.error('error')
logging.success('success')
在其他地方,只需这样做
import logging
logging.info('info')
高级用法
在一个地方导入和初始化
import ezgooey.logging as logging
logging.init(level=logging.INFO)
在其他地方
import ezgooey.logging as logging
log = logging.logger('appname')
log.info('info')
log.warning('warning')
log.error('error')
log.success('success')
...
示例
我的PyPolona项目是一个应用程序,它使用了ezgooey的帮助,并使用PyInstaller打包为macOS和Windows。有关详细信息,请查看源代码。
需求
需要Python 3.9+
许可协议和版权
版权© 2021 Adam Twardoch。根据MIT许可协议许可。
<script async defer src="https://buttons.github.io/buttons.js"></script>项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪一个,请了解有关安装包的更多信息。
源代码分发
ezgooey-1.3.4.tar.gz (7.8 kB 查看哈希值)
构建分发
ezgooey-1.3.4-py3-none-any.whl (6.7 kB 查看哈希值)
关闭
ezgooey-1.3.4.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 366e8285b97cc8a1cd7bffa57582fa5fb76de6a21e47e9487eb7a76aba054d82 |
|
MD5 | 8f118b291dba380732df9cf9afe32a7d |
|
BLAKE2b-256 | 2807e21ff154ffc728aea04502618bd7e8cce57abdb775400a971b927c4f24a7 |
关闭
ezgooey-1.3.4-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1ef0f4a1646f46c95783f051173e631fd4203e5098c92d658a2370355208311c |
|
MD5 | eeb51edd10337142cb9226e180cf0615 |
|
BLAKE2b-256 | 95b6201ef44813bbe86edbc0e43286f825cf862d6f255fdf156f7bb9958067aa |