web-dev-qa-db-fra.com

Comment envoyer des messages texte aux bulles de notification?

J'ai écrit un code python pour obtenir du texte aléatoire dans un fichier .txt. Maintenant, je veux envoyer ce texte au hasard dans la zone de notification via la commande 'notify-send'. Comment fait-on cela?

38
Anuroop Kuppam

Nous pouvons toujours appeler notify-send en tant que sous-processus, par exemple comme ceci:

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

import subprocess

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

Alternativement, nous pourrions aussi installer python-notify et appeler la notification par ceci:

import pynotify

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

Notez qu'il n'y a pas de paquet python3-notify disponible dans Ubuntu. Si vous utilisez Python 3, vous devrez utiliser python3-notify2 . L'API de notify2 est la même: il suffit de remplacer pynotify par notify2.

63
Takkat

python3

Bien que vous puissiez appeler notify-send via os.system ou subprocess, il est sans doute plus cohérent avec la programmation basée sur GTK3 d’utiliser la classe Notify gobject-introspection .

Un petit exemple montrera ceci en action:

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")
10
fossfreedom
import os
mstr='Hello'
os.system('notify-send '+mstr)

Pour répondre à la question de Mehul Mohan et proposer le moyen le plus rapide d'envoyer une notification avec des sections de titre et de message:

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

Mettre cela en fonction pourrait être un peu déroutant à cause des guillemets entre guillemets

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

Pour ceux qui regarderont ceci dans +2018, je peux recommander le paquet notify2 .

Il s’agit d’un remplacement purement python pour notify-python, qui utilise python-dbus pour communiquer directement avec le serveur de notifications. Il est compatible avec Python 2 et 3, et ses rappels peuvent fonctionner avec les applications Gtk 3 ou Qt 4.

4
Supreme Barbarian

Vous devriez utiliser le paquet notify2, il remplace Python-notify. Utilisez-le comme suit.

pip install notify2

Et le code:

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