首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GTK命令在一个单一的BASH脚本中,有可能吗?

GTK命令在一个单一的BASH脚本中,有可能吗?
EN

Ask Ubuntu用户
提问于 2017-11-27 03:21:39
回答 4查看 4.4K关注 0票数 6

在具有循环、变量等的bash脚本中,是否可以执行zenity以及其他程序来删除zenity并添加GTK函数?

如果是,那么是否也可以向qt4设计器添加bash命令、变量、循环(从bash脚本中复制)?

我要问的是,是否有可能将GTK函数与bash脚本中的bash命令或者甚至bash命令与qt4设计器结合使用。

我想摆脱zenity (或yad,k对话框),因为它非常局限于一个更高级的窗口,并且仍然使用bash shell脚本中已经存在的所有其他bash函数,可以吗?

EN

回答 4

Ask Ubuntu用户

发布于 2017-11-27 03:42:39

Python中的GTK+函数没有"GTK命令“。GTK+是一个具有多种语言绑定的库,但是它没有为它提供的函数提供可执行命令。您可以尝试通过一些外部命令来完成GTK+ API所能做的部分工作:

  • 显示对话框的zenity、yad等
  • 访问剪贴板的xsel或xclip
  • 用于控制应用程序窗口的wmctrl

但是绝大多数GTK+功能不能通过命令访问。

票数 13
EN

Ask Ubuntu用户

发布于 2017-11-27 05:48:45

按照POSIX定义,Shells只是指挥口译员。Gtk是一个库,可以用实际的编程语言导入。因此,答案是否定的,您不能在shell脚本中使用完整的Gtk内容,只能使用yadzenity所允许的有限的一组内容。

但你可以使用Python。它是一种脚本语言,但比shell更适合系统和编程。您可以通过Python中的子进程模块调用存储在/bin/usr/bin等地方的命令。我已经为我的Gtk应用程序做了很多次了。

例如,下面是一个标准函数,用于从Python脚本调用外部命令:

代码语言:javascript
复制
def run_cmd(self, cmdlist):
    """ Reusable function for running external commands """
    new_env = dict(os.environ)
    new_env['LC_ALL'] = 'C'
    try:
        stdout = subprocess.check_output(cmdlist, env=new_env)
    except subprocess.CalledProcessError:
        pass
    else:
        if stdout:
            return stdout

下面是一个在我的xrandr-indicator中使用它从Ubuntu的顶部面板切换屏幕分辨率的例子;顾名思义,它在幕后调用xrandr

代码语言:javascript
复制
    self.run_cmd(['xrandr','--output',out,'--mode',mode]) 

至于shell,您需要使用-c参数调用shell。所以像这样的东西可以起作用:

代码语言:javascript
复制
subprocess.Popen(['bash','-c', 'echo hello world'])

或者,考虑实现进程间通信。在python中创建GUI,但让它通过命名管或文件与shell脚本通信。

票数 7
EN

Ask Ubuntu用户

发布于 2022-11-08 10:25:49

我知道这个线程是旧的,但是那些正在寻找答案的人,有一个名为框对话框对话框的程序可能是有用的。它的文档是这里,示例是这里

票数 1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/980575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档