当前位置: 首页>>技术问答>>正文


如何向通知气泡发送短信?

, ,

问题描述

我编写了一个python代码,用于将随机文本转换为.txt文件。现在我想通过’notify-send’命令将这个随机文本发送到通知区域。我们怎么做?

最佳解决方法

我们总是可以将notify-send称为子进程,例如:

#!/usr/bin/env python
#-*- coding: utf-8 -*-

import subprocess

def sendmessage(message):
    subprocess.Popen(['notify-send', message])
    return

或者我们也可以安装python-notify并通过以下方式调用通知:

import pynotify

def sendmessage(title, message):
    pynotify.init("Test")
    notice = pynotify.Notification(title, message)
    notice.show()
    return

请注意,Ubuntu中没有可用的python3-notify软件包。如果您使用的是Python 3,则需要使用python3-notify2。 notify2的API是相同的:只需用notify2替换pynotify即可。

次佳解决方法

python3

虽然您可以通过os.systemsubprocess调用notify-send,但使用Notify gobject-introspection类可以更加符合基于GTK3的编程。

一个小例子将展示这一点:

from gi.repository import GObject
from gi.repository import Notify

class MyClass(GObject.Object):
    def __init__(self):

        super(MyClass, self).__init__()
        # lets initialise with the application name
        Notify.init("myapp_name")

    def send_notification(self, title, text, file_path_to_icon=""):

        n = Notify.Notification.new(title, text, file_path_to_icon)
        n.show()

my = MyClass()
my.send_notification("this is a title", "this is some text")

第三种解决方法

import os
mstr='Hello'
os.system('notify-send '+mstr)

第四种方法

要回答Mehul Mohan问题,并提出推送带有标题和消息部分的通知的最短路径:

import os
os.system('notify-send "TITLE" "MESSAGE"')

由于引号中的引号,将其置于函数中可能会有点混乱

import os
def message(title, message):
  os.system('notify-send "'+title+'" "'+message+'"')

第五种方法

对于在+2018中看到这个的人,我可以推荐notify2包。

This is a pure-python replacement for notify-python, using python-dbus to communicate with the notifications server directly. It’s compatible with Python 2 and 3, and its callbacks can work with Gtk 3 or Qt 4 applications.

第六种方法

您应该使用notify2包,它是python-notify的替代品。使用如下。

pip install notify2

和代码:

import notify2
notify2.init('app name')
n = notify2.Notification('title', 'message')
n.show()

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2188.html,未经允许,请勿转载。