मैं अधिसूचना बुलबुले में पाठ संदेश कैसे भेजूं?


38

मैंने एक .txt फ़ाइल में यादृच्छिक पाठ प्राप्त करने के लिए एक अजगर कोड लिखा था। अब मैं इस यादृच्छिक पाठ को 'सूचना-भेजें' कमांड के माध्यम से अधिसूचना क्षेत्र में भेजना चाहता हूं। हम यह कैसे करे?

जवाबों:


63

हम हमेशा सूचित कर सकते हैं - एक उपप्रकार के रूप में भेजें , जैसे कि:

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

import subprocess

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

वैकल्पिक रूप से हम भी अजगर-सूचना स्थापित कर सकते हैं और उसके माध्यम से अधिसूचना को कॉल कर सकते हैं:

import pynotify

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

ध्यान दें कि उबंटू में कोई python3- नोटिफ़िकेशन पैकेज उपलब्ध नहीं है। यदि आप पायथन 3 का उपयोग कर रहे हैं, तो आपको python3-Inform2 का उपयोग करना होगा । सूचना 2 के लिए एपीआई एक ही है: बस के pynotifyसाथ बदलें notify2


1
मुझे subprocess.Popen(['notify-send', message])पहला उदाहरण काम करने के लिए उपयोग करना था ।
लार्जो

दूसरा एक एक pynotify.init("Test")और pynotify.Notification(title, message).show()। वैसे मैं
Py

इसके लिए खेद है। मैं काम पर अपने बॉक्स पर पहले यह परीक्षण करने में असमर्थ था - मेरा बुरा। लापता बिट्स को संपादित किया।
Takat

10

python3

जबकि आप कॉल कर सकते हैं 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")

सिर्फ Gtk प्रोग्रामिंग के साथ अधिक सुसंगत नहीं है, लेकिन यह एक एकल प्रक्रिया भी है: कोई कांटा-निष्पादन नहीं हो रहा है, इसलिए नई प्रक्रिया को पैदा करने के लिए संसाधनों की कोई बर्बादी नहीं है केवल एक अधिसूचना बुलबुला भेजने के लिए, प्लस Popen()कमांड चलाने के लिए शेल को कॉल करेगा, इसलिए वहां शेल प्रक्रिया पॉपिंग भी।
सर्गी कोलोडाज़नी

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

मैं इस अधिसूचना को कैसे अनुकूलित करूं? जैसे हेडिंग, इमेज इन नोटिफिकेशन आदि?
mehulmpt

1
यह संस्करण मनमाना कमांड निष्पादन के लिए असुरक्षित है।
स्टीव

5

मेहुल मोहन सवाल का जवाब देने के साथ-साथ शीर्षक और संदेश अनुभागों के साथ एक अधिसूचना को धकेलने का सबसे छोटा तरीका प्रस्तावित करते हैं:

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)तार जोड़ने के बजाय उपयोग करने के बारे में क्या ?
स्टैम कालि

4

+2018 में इसे देखने वाले किसी भी व्यक्ति के लिए, मैं Inform2 पैकेज की सिफारिश कर सकता हूं ।

यह नोटिफ़िकेशन-पाइथन के लिए एक शुद्ध-पायथन प्रतिस्थापन है, जो सीधे सूचनाओं के साथ संवाद करने के लिए अजगर-डब का उपयोग करता है। यह पायथन 2 और 3 के साथ संगत है, और इसके कॉलबैक Gtk 3 या Qt 4 अनुप्रयोगों के साथ काम कर सकते हैं।


3

आपको सूचित 2 पैकेज का उपयोग करना चाहिए, यह अजगर-सूचना के लिए एक प्रतिस्थापन है। इसका उपयोग निम्नानुसार करें।

pip install notify2

और कोड:

import notify2
notify2.init('app name')
n = notify2.Notification('title', 'message')
n.show()
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.