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?
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?
Réponses:
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 également installer python-notify et appeler la notification par le biais:
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
.
pynotify.init("Test")
et pynotify.Notification(title, message).show()
. En passant, je suis "l'apprentissage de Python à la dure", alors je pourrais peut-être oublier quelque chose ...
Vous pouvez 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")
Popen()
appelera shell pour exécuter la commande. processus shell surgissant aussi.
Pour répondre à la question de Mehul Mohan et proposer le moyen le plus rapide de transmettre 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+'"')
'notify-send "{}" "{}"'.format(title, message)
plutôt que d'ajouter des chaînes?
Pour ceux qui regarderont ceci en +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.
subprocess.Popen(['notify-send', message])
pour faire fonctionner le premier exemple.