首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何并行运行多个终端并将其输出发送到使用GTK3+编写的图形用户界面?

如何并行运行多个终端并将其输出发送到使用GTK3+编写的图形用户界面?
EN

Stack Overflow用户
提问于 2021-05-20 04:00:17
回答 1查看 50关注 0票数 0

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

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

EN

回答 1

Stack Overflow用户

发布于 2021-05-20 23:43:42

要执行shell脚本命令并获得输出,您实际上不需要终端,您可以执行类似"subprocess.check_output“的命令,它将执行命令并获得输出……获得输出后,您可以在文本视图中打印它

代码语言:javascript
运行
复制
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 Safe Threading

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

https://stackoverflow.com/questions/67610091

复制
相关文章

相似问题

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