在基于 Ubuntu 的安装中显示通知

在基于 Ubuntu 的安装中显示通知

我正在(尝试)为基于 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-gobjectlibnotify-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安装任何新内容。简单易用,始终完美运行。

举几个例子:

  1. 只需一条文字通知:

    subprocess.Popen(["notify-send", "some text"])
    

    在此处输入图片描述

  2. 标题和一些文字:

    subprocess.Popen(["notify-send", "Title", "some text"])
    

    在此处输入图片描述

  3. 一个图标、一个标题和一些文本:

    img = "/path/to/icon.png"
    subprocess.Popen(["notify-send", "-i", img, "Title", "some text"])
    

    在此处输入图片描述

相关内容