Como envio mensagens de texto para as bolhas de notificação?

36

Eu escrevi um código python para obter texto aleatório em um arquivo .txt. Agora quero enviar este texto aleatório para a área de notificação através do comando 'notify-send'. Como fazemos isso?

    
por Anuroop Kuppam 29.02.2012 / 09:48

6 respostas

60

Sempre podemos chamar notify-send como um subprocesso, por exemplo, assim:

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

import subprocess

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

Alternativamente, poderíamos também instalar python-notify e chamar a notificação por meio disso:

import pynotify

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

Note que não há nenhum pacote python3-notify disponível no Ubuntu. Se você estiver usando o Python 3, você precisará usar python3-notify2 . A API para notify2 é a mesma: basta substituir pynotify por notify2 .

    
por Takkat 29.02.2012 / 10:16
10

python3

Embora você possa chamar notify-send via os.system ou subprocess , é indiscutivelmente mais consistente com a programação baseada em GTK3 para usar o Notify gobject-introspection class.

Um pequeno exemplo mostrará isso em ação:

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")
    
por fossfreedom 08.06.2014 / 16:15
6
import os
mstr='Hello'
os.system('notify-send '+mstr)
    
por Syed 'sunny' I. Tauhidi 08.06.2014 / 02:57
5

Para responder à pergunta de Mehul Mohan, além de propor o caminho mais curto para enviar uma notificação com as seções de título e mensagem:

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

Colocar isso em funcionamento pode ser um pouco confuso devido a citações entre aspas

import os
def message(title, message):
  os.system('notify-send "'+title+'" "'+message+'"')
    
por Silver Ringvee 26.10.2015 / 11:01
3

Para quem está vendo isso em +2018, posso recomendar o pacote 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.

    
por Supreme Barbarian 14.01.2018 / 18:48
2

Você deve usar o pacote notify2, que é um substituto para python-notify. Use como segue.

pip install notify2

E o código:

import notify2
notify2.init('app name')
n = notify2.Notification('title', 'message')
n.show()
    
por 15.10.2018 / 23:35