Я написав код python для отримання випадкового тексту у файл .txt. Тепер я хочу надіслати цей випадковий текст у область сповіщення за допомогою команди "notify-send". Як ми це робимо?
Я написав код python для отримання випадкового тексту у файл .txt. Тепер я хочу надіслати цей випадковий текст у область сповіщення за допомогою команди "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. Якщо ви використовуєте Python 3, вам потрібно буде використовувати python3-notify2 . API для notify2 такий же: просто замініть pynotify
на notify2
.
pynotify.init("Test")
і pynotify.Notification(title, message).show()
. До речі, я „Навчаю Пітона важким шляхом”, тож я просто можу щось пропустити…
У той час як ви можете зателефонувати notify-send
через os.system
або subprocess
це, можливо, більше відповідає програмуванню на базі GTK3 для використання класу самоаналізу Gobject-самовизначення .
Невеликий приклад покаже це в дії:
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()
буде викликати оболонку для запуску команди, тому є Процес оболонки спливає теж.
Щоб відповісти на запитання Мехула Мохана, а також запропонувати найкоротший спосіб надіслати повідомлення з розділами заголовка та повідомлення:
import os
os.system('notify-send "TITLE" "MESSAGE"')
Введення цього функції може бути дещо заплутаним через наведення лапок
import os
def message(title, message):
os.system('notify-send "'+title+'" "'+message+'"')
'notify-send "{}" "{}"'.format(title, message)
а не додаванням рядків?
Для всіх, хто дивиться на це у +2018, я можу рекомендувати пакет notify2 .
Це заміна чистого пітона для notify-python, використовуючи python-dbus для прямого спілкування з сервером сповіщень. Він сумісний з Python 2 і 3, і його зворотні дзвінки можуть працювати з програмами Gtk 3 або Qt 4.
subprocess.Popen(['notify-send', message])
щоб зробити перший приклад роботи.