Python 如果bash脚本正在运行,则显示图形微调器

Python 如果bash脚本正在运行,则显示图形微调器,python,bash,Python,Bash,我在bash中有一些脚本,如果脚本正在运行,我需要显示图形微调器。(某些脚本使用wget) 示例 #!/bin/bash wget -c http://sourceforge.net/projects/wine/files/Source/wine-1.7.19.tar.bz2 我可以用我的简单脚本notify send捕获此wget… #!/bin/sh SERVICE='wget' SERVICE2='curl' SERVICE3='myscript' while [[ $(ps ax

我在bash中有一些脚本,如果脚本正在运行,我需要显示图形微调器。(某些脚本使用wget)

示例

#!/bin/bash
wget -c http://sourceforge.net/projects/wine/files/Source/wine-1.7.19.tar.bz2
我可以用我的简单脚本notify send捕获此wget…

#!/bin/sh

SERVICE='wget'
SERVICE2='curl'
SERVICE3='myscript'

while [[ $(ps ax | grep -v grep | grep -c $SERVICE3) -gt 0 ]]
do
if [[ $(ps ax | grep -v grep | grep -c $SERVICE3) -gt 0 ]] && [[ $(ps ax | grep -v grep | grep -c $SERVICE) -gt 0 ]] || [[ $(ps ax | grep -v grep | grep -c $SERVICE2) -gt 0 ]] ; then 

notify-send "Downloading wine 
Please wait" -i "/usr/share/icons/acciones/loadingimage.png" 
exit
fi

done
#!/usr/bin/env python


from gi.repository import Gtk
from gi.repository import Gdk
import sys


class MyWindow(Gtk.ApplicationWindow):
    # a window

    def __init__(self, app):
        Gtk.Window.__init__(self, title="Spinner Example", application=app)
        self.set_default_size(200, 200)
        self.set_border_width(30)

        # a spinner
        self.spinner = Gtk.Spinner()
        # that by default spins
        self.spinner.start()
        # add the spinner to the window
        self.add(self.spinner)

    # event handler
    # a signal from the keyboard (space) controls if the spinner stops/starts
    def do_key_press_event(self, event):
        # keyname is the symbolic name of the key value given by the event
        keyname = Gdk.keyval_name(event.keyval)
        # if it is "space"
        if keyname == "space":
            # and the spinner is active
            if self.spinner.get_property("active"):
                # stop the spinner
                self.spinner.stop()
            # if the spinner is not active
            else:
                # start it again
                self.spinner.start()
        # stop the signal emission
        return True


class MyApplication(Gtk.Application):

    def __init__(self):
        Gtk.Application.__init__(self)

    def do_activate(self):
        win = MyWindow(self)
        win.show_all()

    def do_startup(self):
        Gtk.Application.do_startup(self)

app = MyApplication()
exit_status = app.run(sys.argv)
sys.exit(exit_status)
我找到了下一个用python编写的示例,但我不知道如何将其集成到bash脚本中。

#!/bin/sh

SERVICE='wget'
SERVICE2='curl'
SERVICE3='myscript'

while [[ $(ps ax | grep -v grep | grep -c $SERVICE3) -gt 0 ]]
do
if [[ $(ps ax | grep -v grep | grep -c $SERVICE3) -gt 0 ]] && [[ $(ps ax | grep -v grep | grep -c $SERVICE) -gt 0 ]] || [[ $(ps ax | grep -v grep | grep -c $SERVICE2) -gt 0 ]] ; then 

notify-send "Downloading wine 
Please wait" -i "/usr/share/icons/acciones/loadingimage.png" 
exit
fi

done
#!/usr/bin/env python


from gi.repository import Gtk
from gi.repository import Gdk
import sys


class MyWindow(Gtk.ApplicationWindow):
    # a window

    def __init__(self, app):
        Gtk.Window.__init__(self, title="Spinner Example", application=app)
        self.set_default_size(200, 200)
        self.set_border_width(30)

        # a spinner
        self.spinner = Gtk.Spinner()
        # that by default spins
        self.spinner.start()
        # add the spinner to the window
        self.add(self.spinner)

    # event handler
    # a signal from the keyboard (space) controls if the spinner stops/starts
    def do_key_press_event(self, event):
        # keyname is the symbolic name of the key value given by the event
        keyname = Gdk.keyval_name(event.keyval)
        # if it is "space"
        if keyname == "space":
            # and the spinner is active
            if self.spinner.get_property("active"):
                # stop the spinner
                self.spinner.stop()
            # if the spinner is not active
            else:
                # start it again
                self.spinner.start()
        # stop the signal emission
        return True


class MyApplication(Gtk.Application):

    def __init__(self):
        Gtk.Application.__init__(self)

    def do_activate(self):
        win = MyWindow(self)
        win.show_all()

    def do_startup(self):
        Gtk.Application.do_startup(self)

app = MyApplication()
exit_status = app.run(sys.argv)
sys.exit(exit_status)


在运行脚本并在脚本结束时终止之前,是否尝试过将微调器作为另一个线程启动?只需制作一个显示微调器的可执行文件,并将其自身锁定在用户不容易关闭的位置,就可以了。如果bash脚本在终端中运行,那么为什么不使用基于文本的微调器呢?否则,您将有两个窗口(bash/spinner),并且它将脱节。或者用Python实现您的下载代码。@MomemtumMori我还没有尝试过,但我喜欢这个微调器在完成某个wget过程时会自动关闭。@invert在图形界面中以静默方式运行,因此我需要用户看到脚本正在工作。