Tôi đã viết một mã python để nhận văn bản ngẫu nhiên vào một tệp .txt. Bây giờ tôi muốn gửi văn bản ngẫu nhiên này vào khu vực thông báo thông qua lệnh 'notify-send'. làm sao chúng ta làm việc đó bây giờ?
Tôi đã viết một mã python để nhận văn bản ngẫu nhiên vào một tệp .txt. Bây giờ tôi muốn gửi văn bản ngẫu nhiên này vào khu vực thông báo thông qua lệnh 'notify-send'. làm sao chúng ta làm việc đó bây giờ?
Câu trả lời:
Chúng ta luôn có thể gọi thông báo-gửi dưới dạng một quy trình con, ví dụ như thế:
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import subprocess
def sendmessage(message):
subprocess.Popen(['notify-send', message])
return
Ngoài ra, chúng tôi cũng có thể cài đặt thông báo python và gọi thông báo qua đó:
import pynotify
def sendmessage(title, message):
pynotify.init("Test")
notice = pynotify.Notification(title, message)
notice.show()
return
Lưu ý rằng không có gói thông báo python3 có sẵn trong Ubuntu. Nếu bạn đang sử dụng Python 3, bạn sẽ cần sử dụng python3-notify2 . API cho notify2 giống nhau: chỉ cần thay thế pynotify
bằng notify2
.
pynotify.init("Test")
và pynotify.Notification(title, message).show()
. Nhân tiện, tôi đang học Python Con đường khó khăn, vì vậy tôi có thể bỏ qua điều gì đó ...
Trong khi bạn có thể gọi notify-send
qua os.system
hoặc subprocess
nó được cho là phù hợp hơn với lập trình dựa trên GTK3 để sử dụng lớp intropection Notify .
Một ví dụ nhỏ sẽ cho thấy điều này trong hành động:
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()
sẽ gọi shell để chạy lệnh, vì vậy, có quá trình vỏ bật lên quá.
Để trả lời câu hỏi Mehul Mohan cũng như đề xuất cách ngắn nhất để đưa ra thông báo với phần tiêu đề và thông báo:
import os
os.system('notify-send "TITLE" "MESSAGE"')
Đặt chức năng này vào chức năng có thể hơi khó hiểu do dấu ngoặc kép trong dấu ngoặc kép
import os
def message(title, message):
os.system('notify-send "'+title+'" "'+message+'"')
'notify-send "{}" "{}"'.format(title, message)
chứ không phải thêm chuỗi?
Đối với bất cứ ai nhìn vào điều này trong +2018, tôi có thể đề xuất gói notify2 .
Đây là một thay thế python thuần cho python thông báo, sử dụng python-dbus để liên lạc trực tiếp với máy chủ thông báo. Nó tương thích với Python 2 và 3 và các cuộc gọi lại của nó có thể hoạt động với các ứng dụng Gtk 3 hoặc Qt 4.
subprocess.Popen(['notify-send', message])
để làm cho ví dụ đầu tiên làm việc.