我写了一个python代码,用于将随机文本插入.txt文件。现在,我想通过“ notify-send”命令将此随机文本发送到通知区域。我们该怎么做?
我写了一个python代码,用于将随机文本插入.txt文件。现在,我想通过“ notify-send”命令将此随机文本发送到通知区域。我们该怎么做?
Answers:
我们总是可以将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-notify软件包。如果您使用的是Python 3,则需要使用python3-notify2。notify2的API相同:只需替换pynotify
为即可notify2
。
pynotify.init("Test")
和pynotify.Notification(title, message).show()
。顺便说一下,我是“学习Python的艰辛之路”,所以我可能会忽略一些东西……
虽然您可以notify-send
通过调用,os.system
或者subprocess
使用Notify gobject-introspection类可以说与基于GTK3的编程更加一致。
一个小例子将展示这一点:
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()
还会调用shell来运行命令,因此Shell进程也会弹出。
要回答Mehul Mohan问题并提出最简单的方式来推送带有标题和消息部分的通知:
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)
而不是添加字符串呢?
subprocess.Popen(['notify-send', message])
第一个示例。