使用PyGTK进行线程处理

时间:2011-12-06 08:00:15

标签: python pygtk

首先,我必须说我在这个问题上已经搜索了很长时间,而且我可能知道最基本的资源。我试图使用它:https://github.com/woodenbrick/gtkPopupNotify向以前的所有命令行程序添加通知系统。遗憾的是,由于我执行了大量的睡眠操作等,这通常会挂起。我认为如果我能够获得一个线程系统,它会起作用。基本上,我想要的是发出一个不会干扰程序的任何其他操作的通知,包括其他PyGTK组件。目前发出这些通知的功能对我来说是这样的:

    def showMessage(title, message):
        notifier1 = gtkPopupNotify.NotificationStack(timeout=4)
        notifier1.bg_color = gtk.gdk.Color("black")
        notifier1.fg_color = gtk.gdk.Color("white")
        notifier1.edge_offset_x = 5-27 #-27 for odd bugginess
        notifier1.edge_offset_y = 5
        notifier1.new_popup(title=title, message=message)

任何帮助都会受到高度赞赏,因为我真的厌倦了这个问题。

1 个答案:

答案 0 :(得分:1)

使用PyGTK,我强烈建议完全避免使用线程。 GTK库不完全thread-safe,在Win-32下,它们根本不支持线程。因此,尝试与他们合作最终会成为一种痛苦。您可以使用Python generatorsgobject.idle_add() method

“假装”获得一些非常好的结果

作为自己编码的替代方法,您也可以使用Zenity,这是一个Gnome程序,用于从命令行启动通知对话框。这应该是线程安全的。

import subprocess
subprocess.call(["zenity", "--notification", "--text=You have been notified"])