说来惭愧,接触Python也有两年的时间了,不知不觉接触到了很多特别好玩的项目,但是有时候还会是被惊艳到,原来还有这么多东西是自己还没有听说过的啊。。。。
闲话就不多说了,这里主要是简单介绍一个Python命令行执行的程序项目自动化转化为GUI应用的神器Geopy,今天尝试了一下,着实很简单,我也就是使用了最简单的功能,有时间继续去挖掘挖掘,不过我觉得就这些表面的东西已经够我现在使用了,因为已经很方便地将命令行程序转为美观漂亮的GUI应用的。
这里先拿来官方给的一个实例跑一下,程序内容如下:
'''
@author: Chris
Created on Dec 21, 2013
__ __ _
\ \ / / | |
\ \ /\ / /__| | ___ ___ _ __ ___ ___
\ \/ \/ / _ \ |/ __/ _ \| '_ ` _ \ / _ \
\ /\ / __/ | (_| (_) | | | | | | __/
___\/__\/ \___|_|\___\___/|_| |_| |_|\___|
|__ __|
| | ___
| |/ _ \
| | (_) |
_|_|\___/ _ _
/ ____| | | |
| | __ ___ ___ ___ _ _| | |
| | |_ |/ _ \ / _ \ / _ \ | | | | |
| |__| | (_) | (_) | __/ |_| |_|_|
\_____|\___/ \___/ \___|\__, (_|_)
__/ |
|___/
This demo will show you the full range of widget
types available to Gooey
'''
from gooey import Gooey, GooeyParser
from message import display_message
@Gooey(dump_build_config=True, program_name="Widget Demo")
def main():
desc = "Example application to show Gooey's various widgets"
file_help_msg = "Name of the file you want to process"
my_cool_parser = GooeyParser(description=desc)
my_cool_parser.add_argument(
"FileChooser", help=file_help_msg, widget="FileChooser")
my_cool_parser.add_argument(
"DirectoryChooser", help=file_help_msg, widget="DirChooser")
my_cool_parser.add_argument(
"FileSaver", help=file_help_msg, widget="FileSaver")
my_cool_parser.add_argument(
"MultiFileSaver", help=file_help_msg, widget="MultiFileChooser")
my_cool_parser.add_argument("directory", help="Directory to store output")
my_cool_parser.add_argument('-d', '--duration', default=2,
type=int, help='Duration (in seconds) of the program output')
my_cool_parser.add_argument('-s', '--cron-schedule', type=int,
help='datetime when the cron should begin', widget='DateChooser')
my_cool_parser.add_argument(
"-c", "--showtime", action="store_true", help="display the countdown timer")
my_cool_parser.add_argument(
"-p", "--pause", action="store_true", help="Pause execution")
my_cool_parser.add_argument('-v', '--verbose', action='count')
my_cool_parser.add_argument(
"-o", "--overwrite", action="store_true", help="Overwrite output file (if present)")
my_cool_parser.add_argument(
'-r', '--recursive', choices=['yes', 'no'], help='Recurse into subfolders')
my_cool_parser.add_argument(
"-w", "--writelog", default="writelogs", help="Dump output to local file")
my_cool_parser.add_argument(
"-e", "--error", action="store_true", help="Stop process on error (default: No)")
verbosity = my_cool_parser.add_mutually_exclusive_group()
verbosity.add_argument('-t', '--verbozze', dest='verbose',
action="store_true", help="Show more details")
verbosity.add_argument('-q', '--quiet', dest='quiet',
action="store_true", help="Only output on error")
args = my_cool_parser.parse_args()
display_message()
def here_is_more():
pass
if __name__ == '__main__':
main()
启动后的界面如下:
很简洁有木有,有时候更需要的就是这样的一个简单的界面来代替传统的在CMD窗口里面输入命令来启动程序的方式。
接下来我以自己的一个项目为例进行重构实验,具体如下:
def gcForestProgram():
my_cool_parser = GooeyParser(description=u'深度森林模型演示实例')
my_cool_parser.add_argument(
"data",
metavar=u'数据集输入:',
help="[鸢尾花数据集]|[自定义数据集]",
choices=['iris','data.csv','data/data.csv'],
default='iris')
my_cool_parser.add_argument(
"model",
metavar=u'模型选择:',
help="[决策树模型]|[gcForest模型]|[同时]",
choices=['DT','gcForest','both'],
default='DT')
my_cool_parser.add_argument(
"ratio",
metavar=u'测试集数据占比:',
help="[0.2-0.4]",
choices=['0.2','0.3','0.4'],
default='0.3')
data=args.data.lower()
ratio=float(args.ratio)
model=args.model.lower()
print('model: ',model)
if data=='iris':
iris_data=datasets.load_iris()
X_list=iris_data.data
y_list=iris_data.target
else:
X_list,y_list=loadTxtData(data=data)
if model=='DT':
decisionTreeModel(X_list,y_list,ratio=ratio)
elif model=='gcForest':
gcforest=gcforestModel(X_list,y_list,ratio=ratio)
elif model=='both':
decisionTreeModel(X_list,y_list,ratio=ratio)
print('\n===============================================\n')
gcforest=gcforestModel(X_list,y_list,ratio=ratio)
print('Finished!!!')
启动后界面如下所示:
个人感觉还是很不错的了。
下面选择需要的参数,我们先看一下每个参数的可选空间,这里下拉框上面给出来了可选项或者选择范围,下面下拉框的内容截图如下:
这里我们选择一下参数:
数据集:iris
模型:both
ratio:0.3
程序执行过程截图如下:
执行结束结果截图如下:
很不错的自动化GUI工具,记录一下,学习了!欢迎学习交流,欢迎推荐好玩的项目!