알림 풍선에 문자 메시지를 보내려면 어떻게합니까?


38

임의의 텍스트를 .txt 파일로 가져 오는 Python 코드를 작성했습니다. 이제 'notify-send'명령을 통해이 임의의 텍스트를 알림 영역으로 보내려고합니다. 우리는 어떻게합니까?

답변:


63

우리는 항상 다음 과 같이 알림 처리를 하위 프로세스로 호출 할 수 있습니다 .

#!/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

우분투에는 python3-notify 패키지가 없습니다. Python 3을 사용하는 경우 python3-notify2 를 사용해야 합니다. 단지 대체 : notify2에 대한 API는 동일 pynotifynotify2.


1
subprocess.Popen(['notify-send', message])첫 번째 예제를 만들기 위해 사용해야 했습니다.
lgarzo

두 번째 것 a pynotify.init("Test")pynotify.Notification(title, message).show(). 그건 그렇고, 나는“파이썬을 배우기 힘들다”, 그래서 나는 단지 뭔가를 간과 할 수 있습니다.
lgarzo

죄송합니다. 나는 직장에서 내 상자에서 이것을 일찍 테스트 할 수 없었습니다. 누락 된 비트를 수정했습니다.
Takkat

10

python3

notify-sendvia를 통해 전화 를 걸 os.system거나 subprocessGTK3 기반 프로그래밍과보다 일관성있게 Notify gobject-introspection 클래스 를 사용할 수 있습니다 .

작은 예제가이를 실제로 보여줍니다.

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")

Gtk 프로그래밍과 더 일관성이있을뿐만 아니라 단일 프로세스이기도합니다. 포크 실행이 없기 때문에 알림 버블을 보내기 위해 새로운 프로세스를 생성하는 데 필요한 리소스 낭비가 없으며 Popen()명령을 실행하기 위해 쉘을 호출하므로 명령이 실행됩니다. 쉘 프로세스도 나타납니다.
Sergiy Kolodyazhnyy

6
import os
mstr='Hello'
os.system('notify-send '+mstr)

이 알림을 어떻게 사용자 정의합니까? 제목, 알림 이미지 등?
mehulmpt

1
이 버전은 임의의 명령 실행에 취약합니다.
Steve

5

제목과 메시지 섹션이있는 알림을 푸시하는 가장 짧은 방법을 제안 할뿐만 아니라 Mehul Mohan 질문에 대답하려면 다음을 수행하십시오.

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

이 기능을 따옴표로 묶는 것은 따옴표로 인해 약간 혼란 스러울 수 있습니다.

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


2
'notify-send "{}" "{}"'.format(title, message)문자열을 추가 하는 대신 사용 하는 것은 어떻습니까?
Stam Kaly 2012 년

4

+2018에서 이것을 보는 사람이라면 notify2 패키지를 추천 할 수 있습니다 .

이것은 python-dbus를 사용하여 notifications 서버와 직접 통신하는 notify-python의 순수한 파이썬 대체입니다. Python 2 및 3과 호환되며 콜백은 Gtk 3 또는 Qt 4 애플리케이션에서 작동 할 수 있습니다.


3

notify2 패키지를 사용해야하며 python-notify를 대체합니다. 다음과 같이 사용하십시오.

pip install notify2

그리고 코드 :

import notify2
notify2.init('app name')
n = notify2.Notification('title', 'message')
n.show()
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.