在具有循环、变量等的bash脚本中,是否可以执行zenity以及其他程序来删除zenity并添加GTK函数?
如果是,那么是否也可以向qt4设计器添加bash命令、变量、循环(从bash脚本中复制)?
我要问的是,是否有可能将GTK函数与bash脚本中的bash命令或者甚至bash命令与qt4设计器结合使用。
我想摆脱zenity (或yad,k对话框),因为它非常局限于一个更高级的窗口,并且仍然使用bash shell脚本中已经存在的所有其他bash函数,可以吗?
发布于 2017-11-27 03:42:39
Python中的GTK+函数没有"GTK命令“。GTK+是一个具有多种语言绑定的库,但是它没有为它提供的函数提供可执行命令。您可以尝试通过一些外部命令来完成GTK+ API所能做的部分工作:
但是绝大多数GTK+功能不能通过命令访问。
发布于 2017-11-27 05:48:45
按照POSIX定义,Shells只是指挥口译员。Gtk是一个库,可以用实际的编程语言导入。因此,答案是否定的,您不能在shell脚本中使用完整的Gtk内容,只能使用yad和zenity所允许的有限的一组内容。
但你可以使用Python。它是一种脚本语言,但比shell更适合系统和编程。您可以通过Python中的子进程模块调用存储在/bin或/usr/bin等地方的命令。我已经为我的Gtk应用程序做了很多次了。
例如,下面是一个标准函数,用于从Python脚本调用外部命令:
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:
self.run_cmd(['xrandr','--output',out,'--mode',mode]) 至于shell,您需要使用-c参数调用shell。所以像这样的东西可以起作用:
subprocess.Popen(['bash','-c', 'echo hello world'])或者,考虑实现进程间通信。在python中创建GUI,但让它通过命名管或文件与shell脚本通信。
https://askubuntu.com/questions/980575
复制相似问题