Pynotify在交互模式下运行正常,但在程序模式下崩溃(Fedora 13)

0 投票
1 回答
824 浏览
提问于 2025-04-16 15:30

我正在尝试在一个小项目中使用pynotify,但在我的Fedora 13机器上遇到了一个奇怪的问题。看起来当我通过程序运行pynotify时,调用show()这个函数时会崩溃——但是如果我自己手动输入这一行代码,它就能正常运行!我在我的Ubuntu电脑上测试过,那里运行得非常顺利。

我的测试代码是:

import pynotify

pynotify.init('someName')
n = pynotify.Notification("Summary", "Body")
n.show()

运行这个代码的结果是:

$ python -i test.py 
Traceback (most recent call last):
  File "test.py", line 5, in <module>
    n.show()
glib.GError: Unable to connect to server
>>> n.show()
True
>>> 

所以,有没有人知道是什么原因导致这种情况呢?不幸的是,我对Fedora环境的控制很有限,所以任何需要管理员权限的解决方案都不太适用。如果需要的话,我可以尝试在本地安装pynotify。谢谢大家的帮助。

1 个回答

0

由于Owen没有接受我提供的答案,这里是我找到的解决办法。请注意,我也不知道为什么这个方法有效(除了模糊的猜测),而且我不能保证这是否是一个好的解决方案,但也许如果你遇到和我一样奇怪的情况,这会对你有所帮助。

如果你执行 n.show() 两次,第二次会成功运行。因此,为了避免在Pynotify正常工作的系统上设置两个通知,我使用了以下代码:

import pynotify

pynotify.init('someName')
n = pynotify.Notification("Summary", "Body")
try:
    n.show()
except:
    n.show()

当然,这个简单的例子有缺陷,尤其是如果Pynotify真的有问题的话,那么两个 n.show() 都会出现错误 - 这只是一个最基本的工作示例。

撰写回答