我正在(尝试)为基于 ubuntu 的操作系统编写一个简单的 python 脚本。作为脚本的一部分,还会显示一个通知。现在,我已经浏览了这里的许多帖子,但每一篇帖子都有一个伴随的问题(和一些问题)。以下是我已经尝试过的不同方法(和相关问题),
使用notify2
这种方法总体上效果不错。然而,出现了以下问题:
a. 由于某种原因,图标未显示在通知气泡中,并且没有错误。一个简单的打印语句,print(os.path.abspath('icon.svg')
返回路径,产生正确的路径,但仍然没有图像。
这是我正在使用的确切代码,
def show_notification(title, content):
notify2.init(title)
n = notify2.Notification(title, content, os.path.abspath('icon.svg'))
n.show()
使用来自 gi.repository 导入 Notify
关注 hello-unity 文件这里。我尝试使用 Notify。我根本无法让它运行!上次我尝试时,ImportError: cannot import name Notify
运行类似 的脚本时出现错误python test.py
。
使用 python3 运行相同操作会python3 test.py
导致不同的错误ImportError: cannot import name Notify, introspection typelib not found
。
为了解决这个问题,我尝试安装python-gobject
,libnotify-bin
但这些已经安装在我的系统 (Elementary OS Loki) 上。错误仍然存在。
使用子进程
这种方法没有出现任何问题,但我不确定这是否是显示通知的最佳方式,因为我打算显示常规通知。这是我使用的代码,
import subprocess as s
s.call(['notify-send','foo','bar'])
核心问题
由于这是我第一次尝试为 Linux 社区(或者更确切地说是 Ubuntu)进行开发,因此我对 Linux 开发还很陌生。尝试寻找一种简单(且正确)的实现(例如通知)相当耗时且令人困惑。除了建议正确的通知实现方式外,如果有人能为我指明正确的方向,我将不胜感激,例如显示或具有 API 参考的 Android 开发人员指南。
在有人问我的开发偏好之前,我更喜欢用 Python。至于 GUI,我还是不确定该走哪条路,尽管 GTK 似乎更受欢迎。
答案1
从 Ubuntu 上的应用程序调用通知
绝对是第三个,使用 或subprocess.call()
。subprocess.Popen()
注意导入但 。无需subprocess
安装任何新内容。简单易用,始终完美运行。
举几个例子: