Ich habe einen Python-Code geschrieben, um zufälligen Text in eine .txt-Datei zu bekommen. Jetzt möchte ich diesen zufälligen Text über den Befehl 'notify-send' in den Benachrichtigungsbereich senden. Wie machen wir das?
Ich habe einen Python-Code geschrieben, um zufälligen Text in eine .txt-Datei zu bekommen. Jetzt möchte ich diesen zufälligen Text über den Befehl 'notify-send' in den Benachrichtigungsbereich senden. Wie machen wir das?
Antworten:
Wir können notify-send immer als Unterprozess aufrufen , zB so:
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import subprocess
def sendmessage(message):
subprocess.Popen(['notify-send', message])
return
Alternativ können wir auch python-notify installieren und die Benachrichtigung folgendermaßen aufrufen:
import pynotify
def sendmessage(title, message):
pynotify.init("Test")
notice = pynotify.Notification(title, message)
notice.show()
return
Beachten Sie, dass in Ubuntu kein python3-notify-Paket verfügbar ist. Wenn Sie Python 3 verwenden, müssen Sie python3-notify2 verwenden . Die API für notify2 ist das gleiche: ersetzen Sie einfach pynotify
mit notify2
.
pynotify.init("Test")
und pynotify.Notification(title, message).show()
. Übrigens, ich
Während Sie anrufen können notify-send
über os.system
oder subprocess
es ist wohl mehr im Einklang mit GTK3 basierter Programmierung zu verwenden , die dieser Artikel gobject-Selbstbeobachtung Klasse.
Ein kleines Beispiel zeigt dies in Aktion:
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()
wird Shell aufgerufen, um den Befehl auszuführen Shell-Prozess auftauchen zu.
Um die Frage von Mehul Mohan zu beantworten und den kürzesten Weg vorzuschlagen, eine Benachrichtigung mit Titel- und Nachrichtenabschnitten zu versenden:
import os
os.system('notify-send "TITLE" "MESSAGE"')
Das Einfügen dieser Funktion kann aufgrund von Anführungszeichen in Anführungszeichen etwas verwirrend sein
import os
def message(title, message):
os.system('notify-send "'+title+'" "'+message+'"')
'notify-send "{}" "{}"'.format(title, message)
von Zeichenfolgen anstatt sie hinzuzufügen?
Für alle, die dies in +2018 betrachten, kann ich das Paket notify2 empfehlen .
Dies ist ein reiner Python-Ersatz für notify-python, der python-dbus verwendet, um direkt mit dem Benachrichtigungsserver zu kommunizieren. Es ist kompatibel mit Python 2 und 3 und seine Rückrufe können mit Gtk 3- oder Qt 4-Anwendungen verwendet werden.
subprocess.Popen(['notify-send', message])
, um das erste Beispiel zum Laufen zu bringen.