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.如果它变得足够好,我们可以拆分成一个新的备份,并使其可以安装.