如何并行运行多个终端,并将它们的输出发送到使用GTK3+编写的GUI



(使用Ubuntu(我正在尝试使用python和Glade创建一个带有GTK3+的GUI,目的是自动化我在工作中的日常活动。基本上,我需要让GUI中的按钮执行我通常在点击时在终端中手动编写的命令,并且获得命令的输出以向GUI发送一些信息是很重要的。

因此,我很难理解如何在后台运行多个终端,并将它们的输出发送到运行GTK接口的脚本。

要执行shell脚本命令并获得输出,您真的不需要终端,您可以执行类似于"子过程check_output";它将执行命令并获得输出。。。获得输出后,您可以在文本视图中打印它

class LabelWindow(Gtk.Window):
def on_clicked(self, button , data):
result = subprocess.check_output(['ls'])
data.set_text(result)


def __init__(self):
Gtk.Window.__init__(self, title="Label Example")
hbox = Gtk.Box(spacing=10)
hbox.set_homogeneous(False)
vbox_left = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10)
vbox_left.set_homogeneous(False)
vbox_right = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10)
vbox_right.set_homogeneous(False)
hbox.pack_start(vbox_left, True, True, 0)
hbox.pack_start(vbox_right, True, True, 0)
label = Gtk.Label(label="This is a normal label")
vbox_left.pack_start(label, True, True, 0)
button = Gtk.Button(label="Click at your own risk")
label.set_mnemonic_widget(button)
vbox_right.pack_start(button, True, True, 0)
button.connect("clicked", self.on_clicked, label)
self.add(hbox)

window = LabelWindow()
window.connect("destroy", Gtk.main_quit)
window.show_all()
Gtk.main()

这是一个非常粗略的例子。。但是,如果每个按钮都将像一个接一个地同步执行一个命令,那么你可以创建更多的按钮,并将特定的命令添加到每个按钮中。如果你希望它们像一个不应该等待另一个按钮那样异步执行,那就意味着添加线程并使用glib.idle_add Python GTK+3安全线程

最新更新