粘糊糊:将任何Python命令行程序转换为GUI应用程序

2021-06-14 15:08:57

将任何Python 2或3控制台程序转换为具有一行的GUI应用程序

注意:Python 2用户必须手动安装wxpython!不幸的是,这不能作为PIP安装的一部分来完成,并应从WxPython网站手动下载。

粘糊糊地通过一个简单的装饰器附加到您的代码,以上方法有您的AggParse声明(通常是主要的)。

从粘糊糊的进口粘糊糊@ gooey< ---所有它需要! :) def main():parser = ArgumentParser(...)#剩余的代码

#选项@ gooey(高级= boolean,#切换是否显示高级配置或not luginal = language_string,#翻译通过json auto_start = true可配置,#skip配置屏幕全部一起目标= seamutable_cmd,#显式设置子进程可执行arguments程序_name = '名称',#默认为脚本名称program_description,#默认为Argparse说明default_size =(610,530),#guirserce_cols = 1的启动大小= 1,#34中的列数;必需和#34;部分optional_cols = 2,#34中的列数;可选" dimp_build_config = false,#pect json gooey用于配置自己load_build_config = none,#加载json gooey-生成的配置monospace_display = false)#使用输出屏幕中的单个间隔字体)def main():parser = AgangeParser(...)#剩余的代码

粘糊糊将尽最大努力在GUI中选择合理的小部件默认值。但是,如果需要更精细调整,您可以使用替换rooeyparser代替ArgumentParser。这使您可以控制GUI中的哪些小部件显示。请参阅:粘液

从粘糊糊的导入粘糊糊,枸杞子@ goooeydef main():parser = gooeyparser(描述="我的酷gui程序!")parser.add_argument('文件名',widget =#34 ; filechooser")parser.add_argument('日期',小部件=" Datechooser")......

粘糊涂下载并安装了?伟大的!想在行动中看到它吗?在示例存储库中掌握少数即将下载的示例脚本。他们' ll让您快速游览所有粘糊糊的各种布局,小部件和功能。

粘糊糊将控制台应用程序转换为最终用户友好的GUI应用程序。它让您专注于以熟悉的方式构建强大,可配置的程序,而无需担心将如何呈现给您的普通用户并互动。

因为尽管我们喜欢命令提示,但世界其他地区看起来像从早期的丑陋遗物和#39; 80s。最重要的是,更常见的是只需要做的不仅仅是一件事,这意味着给出之前意味着构建GUI,或者试图解释如何向控制台应用提供参数。粘糊糊是(希望)解决这些问题。它使程序易于使用,漂亮地看!

如果您'重新建立自动实用程序,为您自己,其他程序员或产生的东西,这些程序员可以捕获和管道到另一个控制台应用程序(例如* nix哲学ilils),粘糊糊可能是' t的工具你。但是,如果你'重新建设'跑步和完成,'关于办公式脚本,从点A到Poige B的铲斗的东西,或者只是在非程序员上针对的东西,粘糊糊是这项工作的完美工具。它可以让您在申请中建立复杂,因为您的心愿欲望,同时免费获得GUI方面。

粘糊糊是通过一个简单的装饰器附加到您的代码,以上方法有您的Argparse声明。

在运行时,它将您的Python脚本解析为ArgumentParser的所有引用。 (目前不支持旧的OptParse。)然后提取这些引用,基于&#39分配了组件类型;动作'它们提供,最后用于组装GUI。

粘糊糊是最好根据它发现的选项选择明智的默认值。目前,ArgumentParser._actions映射到以下WX组件。

如果上面的默认值areN' t切割它,您可以使用删除参数分析器更换rooeyparser来控制精确的窗口小部件类型。这为您提供了附加的关键字参数窗口小部件,您可以为其提供要显示的组件的名称。最好的部分?你不必改变任何你的Argparse代码来使用它。把它放进去,你'好好去。

来自Argparse Import ArgumentParser .... def main():parser = ArgumentParser(描述="我很酷的粘糊糊的应用程序!")parser.add_argument(' filename' help =&# 34;文件的名称和#34;)

如上所述,粘糊糊将选择一个正常文本字段作为窗口小部件类型如下:

但是,通过删除rooeyparser并提供小部件名称,您可以显示更多用户友好的filechooser

从粘糊糊的导入rooeyparser .... def main():parser = gooeyparser(描述="我的酷粘糊糊的应用程序!")parser.add_argument(' filename' help =&# 34;文件的名称和#34;,小部件=' filechooser')

请注意,对于这两个窗口小部件,传递给应用程序的值将始终处于ISO格式,而本地化值可能会在GUI的某些部分中显示,具体取决于最终用户设置。

如果存在大型帮助文本块,则默认InLineCheck框可能会少于理想。 BlockCheckBox将文本块移动到正常位置,并为控件旁边显示一个短窗体Block_Label。使用gooey_options.checkbox_label来控制标签文本

粘糊糊是国际准备好的,轻松移植到您的主机语言。语言是通过对粘糊糊装饰器的争论来控制的语言。

所有程序文本都在JSON文件中存储。因此,添加新的语言支持和粘贴粘糊糊/语言/目录中的几个键/值对等同。

只是关于粘糊糊的一切'整体外观和觉得可以通过将参数传递给装饰者来定制。

从&#34重写默认的Argparse组名;位置和#34; "必需"这主要是为了保持与先前版本的粘糊糊的兼容性(这对群体的支持/意识差,并且是对争论的难度差距)。

告诉粘糊糊如何重新调用自己。默认情况下,粘糊将找到python,但这允许您指定程序(如果提供的参数)。

应在使用自定义目标时设置。防止粘糊糊注射额外的CLI参数

GUI窗口标题栏中显示的名称。如果没有提供,标题默认为从sys.argv拉动的脚本名称[0]。

设置“设置”屏幕顶部面板中显示的文本。 默认为从ArgumentParser中拉的说明。 控制所需参数中有多少列⚠️弃用通知:请参阅现代布局控件的组参数 控制可选参数中有多少列⚠️弃用通知:请参阅现代布局控件的组参数 在输出屏幕中使用单个间隔字体⚠️弃用通知:请参阅现代字体配置的组参数 (实验!)当真实时,粘糊糊将用粘糊糊 - ui cli参数调用您的代码,并使用响应填写UI中的动态值(请参阅:使用动态值) 替换在运行时提供的任何命令行参数,以获取粘糊糊配置中指定的默认值 用于模式匹配运行时进度信息的文本正则表达式。 请参阅:为详细的方式显示进度

应用于通过progress_regex找到的任何匹配的Python表达式。请参阅:为详细的方式显示进度

隐藏与progress_regex匹配的文本进度更新的选项。请参阅:为详细的方式显示进度

这包含在progress_regex和progress_expr中使用的剩余时间和经过时间的选项。经过/剩下的时间。包含为具有选项show_time_remaining和hide_time_remailing_on_complete的字典。例如:timing_options = {' show_time_remaining':true,' hide_time_remaining_on_complete':true}

控制调用程序时是否使用shell参数。这里有更多信息

打开/关闭控制台支持终端控制序列(对字体重量和颜色的有限支持)。默认为:false。有关其他详细信息,请参阅文档

在最高级别,您可以通过各种参数可控制的几个整体布局选项到粘糊糊的装饰器。

默认情况下,如果您使用带有粘糊糊的Argparse,则输入将分为两个存储桶:位置和可选。但是,这些aren' t始终是最具描述性的团体呈现给您的用户。您可以任意铲斗输入到逻辑组中并自定义每个的布局。

粘糊糊有少量的演示模式,因此您可以根据内容类型和用户&#39定制其布局。

默认视图是" full"或"高级"配置屏幕。它有两个不同的布局,具体取决于命令行界面的类型'包装的类型。对于大多数应用程序,平面布局将是一个与之一起使用的布局,因为它的布局与主要命令的熟悉的CLI架构相匹配,后跟许多选项(例如curl,ffmpeg)。

在另一边是列布局。这一个最适合具有多个路径的CLIS,或者由多个小工具组成,每个工具都有自己的参数和选项(思考:git)。它显示左列列的主要路径,以及它们在右侧的相应参数。这是将许多不同功能包装成一个应用程序的好方法。

这两个视图都将参数解析器中的每个动作显示为唯一的GUI组件。它使其成为将程序呈现给不熟悉的用户,这些用户通常是指令行选项和/或控制台程序。帮助消息沿每个组件侧面显示,使其尽可能清晰地清除每个小部件。

目前,可以通过参数(在TODO上)明确指定布局(在TODO上)。根据代码库中使用的子项目,构建布局。所以,如果要触发列布局,则需要向Argparse代码添加子项目。

当用户熟悉控制台应用程序时,基本视图最佳,但您仍然希望呈现比简单终端更抛光的东西。通过将粘糊糊的装饰器中的高级参数设置为false来访问基本显示。

没有Config' D期望:它没有显示一个配置屏幕。它跳到显示部分并开始执行主机程序。这是一种改进小脚本脚本的外观的那个。

您可以使用自定义菜单组和项目添加菜单栏到粘糊糊的顶部。

您可以根据需要使用尽可能多的菜单组。它们'重新传递给@gooy装饰器上的菜单参数。

组中的各个菜单项也只是键/值对的映射。它们的确切键集根据其类型而异,但始终存在两个键:

type - 这控制了将附加到菜单项的行为以及它所需的键

关于对话框是您的磨坊对话框。它显示标准本机Abbox中的名称,版本和许可信息等程序信息。

{'类型&#39 ;:'' menutitle&#39 ;:'关于''名称&#39 ;:'粘糊糊的布局演示&#39 ;,':&#39 ;: roey \'布局灵活性的一个例子和#39;'版本&#39 ;:' 1.2 .1','版权所有&#39 ;:' 2018''网站&#39 ;:' https://github.com/chriskiehl/gooy' ;,'开发人员&#39 ;:' http://chriskiehl.com/''许可证&#39 ;:' mit'}

MessageIalog是一个通用信息对话框。您可以从小警报显示任何内容,以便为用户长期信息文本。

{'类型&#39 ;:' messageialog'' menutitle&#39 ;:'信息'消息&#39 ;:&#39 ;:&#39 ;:'嘿,这是ya的一些很酷的信息!&#39 ;,#39;标题&#39 ;:'你应该知道的东西'}

链接用于将用户发送到外部网站。这将在您指定的URL上产生它们的默认浏览器。

@ gooey(program_name ='高级布局组',菜单= [{'姓名&#39 ;:'文件''项目':[{& #39;类型&#39 ;:' aboutdialog&#39 ;,' menutitle&#39 ;:'关于''姓名&#39 ;:'粘糊涂的布局演示'。描述&#39 ;:'粘糊糊的灵活性的一个例子和#39;'版本&#39 ;:' 1.2.1 #39;,'版权&#39 ;:' 2018&#39 ;,'网站&#39 ;:' https://github.com/chriskiehl/gooy' ;, '开发人员&#39 ;:' http://chriskiehl.com/''许可证&#39 ;:' mit'},{'类型&#39 ;:' MessageIalog&#39 ;,' menutitle&#39 ;:'信息&#39 ;,'标题&#39 ;:'我的消息' ,' message&#39 ;:'我正在发作一个信息对话!'},{'类型'链接'和#39; menutitle&#39 ;:'访问我们的网站''网址和#39 ;:' https://github.com/chriskiehl/gooy'}],{&# 39;名称&#39 ;:'帮助'&#3 9;物品&#39 ;: [{'类型&#39 ;:'链接'' menutitle&#39 ;:'文档'' url& #39 ;:' https://www.readthedocs.com/foo' }]}])

⚠️注意!该功能是实验性的。它的API可以完全更改或删除。欢迎并鼓励对此功能的反馈/思考!

粘糊糊可以选择对用户输入进行一些基本的飞行前验证。在内部,它使用这些验证器函数来检查是否存在所需的参数。但是,通过使用GooEyparser,您可以使用自己的验证规则扩展这些功能。这允许粘糊糊显示出大量的用户友好的反馈,然后才能控制到您的程序。

验证器被指定为GooeyParser可用的Gooey_Options映射的一部分。它' s由根键命名验证器和两个内部对组成的简单地图结构:

您的测试功能可以由任何有效的Python表达式组成。它收到变量user_input作为执行其验证的参数。请注意,来自粘糊糊的所有值都是字符串的形式,所以您' ll必须根据需要投入才能执行验证。

来自Gooey.Python_Bindings.Gooy_Decorator导入粘糊糊来自Fooey.python_Bindings.gooy_Parser导入rooeyParser @ gooeydef main():parser = gooeyparser(描述='示例验证器')parser.add_argument('秘密' Metavar ='超级秘密号码和#39;,help ='一个专门在2到14之间的数字,gooey_options = {'验证者&#39 ;: {'测试&#39 ;:' 2< int(user_input)< = 14&#39 ;,'消息&#39 ;:'必须在2到14'}}}} args = parser .parse_args()打印("酷!您的秘密号码:&#34 ;, args.secret)

使用验证器到位,如果任何Validators失败,粘糊可能会呈现相关输入字段旁边的错误消息。

⚠️注意!该功能是实验性的。它的API可以完全更改或删除。欢迎有关此功能的反馈,并鼓励!

粘糊糊的' s选择样式字段(下拉列表框)可以通过启用poll_external_updates选项在运行时馈送动态值集。每次用户访问配置页面时,这会导致粘糊要求从程序中请求更新的值。这可以用于例如在配置屏幕上显示先前执行的结果,而无需用户重新启动程序。

在运行时,每当用户击中配置屏幕时,粘糊会用单个CLI参数调用您的程序:粘糊糊 - ui。这是对UI的更新值的程序的请求。响应于此,在STDOUT上,您的程序应将JSON字符串映射CLI输入返回到选项列表中。

... parser.add_argument(' - load' metavar ='加载上一个保存',help ='加载上一个保存文件',dest =&# 39;文件名&#39 ;,小部件='下拉',choices = list_savefiles(),)

在这里,我们想要填充的输入是 - 载荷。因此,响应于粘糊液-UI请求,您将返回带有 - 作为密钥的json字符串,以及您' d的字符串列表作为值作为值。例如

在示例存储库中查看完整示例代码。或者在愚蠢的小工具中结帐,产生此功能的愚蠢的小工具:Caploverit。

通过粘糊糊的视觉进展反馈很容易!如果您已经显示了文本进度更新,则可以告诉粘糊,以便为其进度条供电。

对于简单的情况,解析为完成百分比的数字表示的输出字符串(例如进度83%)可以是模式匹配的,并转换为具有简单正则表达式的进度条状态(例如@Gooey(Progress_Regex = R" ^进展:(\ D +)%$"))。

对于更复杂的输出,您可以通过自定义评估表达式(Progress_expr)来转换正则表达式匹配。

满足正则表达式的输出字符串可以通过HIDE_PROGRESS_MSG参数从控制台隐藏(例如,@Gooey(progress_regex = R" ^进度:(\ d +)%$&#34 ;, hide_progress_msg = true)。

在您的程序运行时,有很多选项有关讲述粘性的进度。检查粘糊糊的示例存储库是否更详细使用和示例!

粘糊也支持在使用进度时跟踪经过的经过/剩余时间!这是以与项目TQDM类似的方式完成的。可以使用Timing_Options启用此功能,Timing_Options参数采用keys show_time_remaining和hide_time_remailing_on_complete的字典。对于show_time_remaining_on_complete for show_time_remaining和false,默认行为为true。这仅在使用progress_regex和progress_expr时工作。

粘糊糊的六个默认图标附带。 这些可以通过在初始化时通过讲粘糊搜索其他目录来覆盖您自己的自定义图像/图标。 这是通过对粘糊糊的装饰器的image_dir参数完成的。 根据他们的文件名,粘糊糊地区发现了图像。 因此,例如,为了提供自定义配置图标,只需将映像与图像目录中的图片目录中的文件名offic_icon.png放置。 这些是可以被覆盖的文件名: tl; pyinstaller博士是将此build.spec删除到应用程序的根目录中。 编辑其内容,以便应用程序和名称与您的项目相关,然后执行pyinstaller build.spec将您的应用捆绑到即时可执行文件中。 代码,翻译,文档或图形? 欢迎所有拉动请求。 只需先结帐首先结账。