python - 使用 PyGTK 进行线程化

标签 python pygtk

首先,我必须说我已经在这个主题上搜索了很长时间,并且我可能知道最基本的资源。我正在尝试使用这个:https://github.com/woodenbrick/gtkPopupNotify将通知系统添加到以前所有的命令行程序中。可悲的是,由于我执行了大量 sleep 操作等,这通常会挂起。我认为如果我能得到一个适当的线程系统,它就会工作。本质上,我想要的只是发出一个不干扰程序的任何其他操作(包括其他 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)

任何帮助将不胜感激,因为我已经厌倦了这个问题。

最佳答案

对于 PyGTK,我强烈建议完全避免线程。 GTK 库不完整 thread-safe而且,在 Win-32 下,它们根本不支持线程。因此,尝试与他们合作最终会很痛苦。你可以通过使用 Python generators 来“伪装”它来获得一些非常好的结果。和 gobject.idle_add() method

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

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

关于python - 使用 PyGTK 进行线程化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8396825/

相关文章:

python - 如何在 ubuntu 15.04 中安装 poppler?

python - 地板功能错误

python - 如何漂亮地打印 JSON 文件?

python - Ubuntu 中的 PyGTK 图标模糊

python - 处理 pygtk/glade 中的删除事件

python - pygtk 中 connect() 和 connect_object() 的区别

python - 使用 Keras 构建的回归神经网络只能预测一个值

编写包装函数的 Pythonic 方式

python - MySQL&django 卡在巨大的 session 删除上

python - PyGTK 中的像素图透明度