linux – 快速开发GUI命令行
我正在寻找一个可以帮助我快速构建GUI(例如
HTML页面)的软件.当从GUI(例如HTML表单)中选择不同的选项时,这些选项会神奇地变成命令行选项.例如:我的GUI将允许我选择:
>选择输入文件名:inputfn 当点击“提交”时,此用户输入将变成: $cmd_line --input $inputfn --output $outputfn --option1-on --option2-off --option3=42 我想我需要写一个简单的XML(YAML?)配置文件,来描述简单的布局和命令行的特殊性(单选按钮,文本字段…). 我在做梦,还是有这样的东西吗? 解决方法
This post似乎几乎要求你想要什么.
使用YAD的顶级解决方案似乎涵盖了您的要求. 例如以下一个班轮: data="$(yad --title="Desktop entry editor" --text="Simple desktop entry editor" --form --field="Type:CB" --field="Name" --field="Generic name" --field="Comment" --field="Command:FL" --field="Icon" --field="In terminal:CHK" --field="Startup notify:CHK" "Application" "Name" "Generic name" "This is the comment" "/usr/bin/yad" "yad" FALSE TRUE --button="WebUpd8:2" --button="gtk-ok:0" --button="gtk-cancel:1")" 创建一个对话框,其中包含: >文本字段 看起来像: 输出全部放在yad stdout上,echo“$data”看起来像: Application|Name|Generic name|This is the comment|/usr/bin/yad|yad|FALSE|TRUE| 现在,您可以使用某些cmdline工具(如cut或awk)“解析”输出: a="$(echo "$data" | cut -d"|" -f1)" b="$(echo "$data" | cut -d"|" -f1)" 然后只有应用程序逻辑给你. Ubuntu安装: sudo add-apt-repository ppa:webupd8team/y-ppa-manager sudo apt-get update sudo apt-get install yad 编辑:专注于GUI到命令行选项的转换 收到downvote后,我觉得我的答案是错误的.他想要的关键是从GUI转换为cmdline选项界面. 我不知道现有的解决方案,而且由于7天之后,还没有回答,我们可以假设没有现有的解决方案. 因此,我们能做的最好的就是帮助OP自己创建一个解决方案. 这里有一个Python Tk示例 #!/usr/bin/env python import Tkinter import tkFileDialog class Option(object): def __init__(self,optype,name,widget=Tkinter.Entry): self.optype = optype self.name = name if self.optype == 'switch': self.widget = Tkinter.Checkbutton else: self.widget = widget ## INPUT ------------------------------------------------------- options = [ Option("key-value","--text="),Option("switch","-s"),Option("positional","pos0"),"pos1",tkFileDialog.askopenfilename),] ## END ------------------------------------------------------- def askopenfilename(filename): filename.set(tkFileDialog.askopenfilename()) # Build command def ok_func(): cmd = "cmd_line" for option in options: if option.optype == "key-value": val = tkvars[option.name].get() if val: cmd += ' ' cmd += '%s"%s"' % (option.name,val) elif option.optype == "switch": cmd += ' ' if tkvars[option.name].get() == 1: cmd += option.name elif option.optype == "positional": val = tkvars[option.name].get() if val: cmd += ' ' cmd += val print cmd tkvars = {} app = Tkinter.Tk() grid = Tkinter.Frame() row = 0 # Build GUI for option in options: Tkinter.Label(grid,text=option.name).grid(row=row,column=0,sticky='W') if option.widget == Tkinter.Entry: tkvars[option.name] = Tkinter.StringVar() widget = Tkinter.Entry( grid,textvariable=tkvars[option.name] ) elif option.widget == Tkinter.Checkbutton: tkvars[option.name] = Tkinter.IntVar() widget = Tkinter.Checkbutton( grid,variable = tkvars[option.name],onvalue = 1 ) elif option.widget == tkFileDialog.askopenfilename: tkvars[option.name] = Tkinter.StringVar() widget = Tkinter.Button( grid,text='Browse',command=lambda: askopenfilename(tkvars[option.name]) ) widget.grid(row=row,column=1,sticky='W') row += 1 grid.pack() Tkinter.Button(app,text="ok",command=ok_func).pack() Tkinter.Button(app,text="quit",command=app.quit).pack() app.mainloop() 要在Ubuntu 12.04上运行,首先要做: sudo apt-get install python-tk 截图: 为截图生成的命令: cmd_line --text="asdf" -s qwer /path/to/file 行为: >如果–text =的值为空,则省略 如果你想在该代码之上实现一个新的功能,我建议你这样做here.如果它变得足够好,我们可以拆分成一个新的备份,并使其可以安装. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |