linux – 快速开发GUI命令行

linux – 快速开发GUI命令行,第1张

概述我正在寻找一个可以帮助我快速构建GUI(例如 HTML页面)的软件.当从GUI(例如HTML表单)中选择不同的选项时,这些选项会神奇地变成命令行选项.例如:我的GUI将允许我选择: >选择输入文件名:inputfn >选择输出文件名:outputfn >将Option1设置为ON >将Option2设置为OFF >将Option3设置为’42’ > … 当点击“提交”时,此用户输入将变成: $cm 我正在寻找一个可以帮助我快速构建GUI(例如 HTML页面)的软件.当从GUI(例如HTML表单)中选择不同的选项时,这些选项会神奇地变成命令行选项.例如:我的GUI将允许我选择:

>选择输入文件名:inputfn
>选择输出文件名:outputfn
>将Option1设置为ON
>将Option2设置为OFF
>将Option3设置为’42’
> …

当点击“提交”时,此用户输入将变成:

$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-managersudo apt-get updatesudo apt-get install yad

编辑:专注于GUI到命令行选项的转换

收到downVote后,我觉得我的答案是错误的.他想要的关键是从GUI转换为cmdline选项界面.

我不知道现有的解决方案,而且由于7天之后,还没有回答,我们可以假设没有现有的解决方案.

因此,我们能做的最好的就是帮助OP自己创建一个解决方案.
我相信由于没有这么多的命令行选项案例,一个相当小的脚本就足够了.

这里有一个Python Tk示例

#!/usr/bin/env pythonimport Tkinterimport tkfileDialogclass 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 commanddef 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 cmdtkvars = {}app = Tkinter.Tk()grID = Tkinter.Frame()row = 0# Build GUIfor 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 += 1grID.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.如果它变得足够好,我们可以拆分成一个新的备份,并使其可以安装.

总结

以上是内存溢出为你收集整理的linux – 快速开发GUI命令行全部内容,希望文章能够帮你解决linux – 快速开发GUI命令行所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1048843.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存