Tôi muốn biết cách tạo thông báo bật lên trên khay hệ thống bằng python. Tôi đã thấy những điều đó trong rất nhiều softaware, nhưng khó tìm được tài nguyên để làm điều đó dễ dàng với bất kỳ ngôn ngữ nào. Bất cứ ai cũng biết một số thư viện để làm điều này trong Python?Cách tạo thông báo bật lên khay hệ thống bằng python? (Windows)
Trả lời
Với sự giúp đỡ của pywin32
library bạn có thể sử dụng mã ví dụ sau đây tôi thấy here:
from win32api import *
from win32gui import *
import win32con
import sys, os
import struct
import time
class WindowsBalloonTip:
def __init__(self, title, msg):
message_map = {
win32con.WM_DESTROY: self.OnDestroy,
}
# Register the Window class.
wc = WNDCLASS()
hinst = wc.hInstance = GetModuleHandle(None)
wc.lpszClassName = "PythonTaskbar"
wc.lpfnWndProc = message_map # could also specify a wndproc.
classAtom = RegisterClass(wc)
# Create the Window.
style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
self.hwnd = CreateWindow(classAtom, "Taskbar", style, \
0, 0, win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT, \
0, 0, hinst, None)
UpdateWindow(self.hwnd)
iconPathName = os.path.abspath(os.path.join(sys.path[0], "balloontip.ico"))
icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE
try:
hicon = LoadImage(hinst, iconPathName, \
win32con.IMAGE_ICON, 0, 0, icon_flags)
except:
hicon = LoadIcon(0, win32con.IDI_APPLICATION)
flags = NIF_ICON | NIF_MESSAGE | NIF_TIP
nid = (self.hwnd, 0, flags, win32con.WM_USER+20, hicon, "tooltip")
Shell_NotifyIcon(NIM_ADD, nid)
Shell_NotifyIcon(NIM_MODIFY, \
(self.hwnd, 0, NIF_INFO, win32con.WM_USER+20,\
hicon, "Balloon tooltip",msg,200,title))
# self.show_balloon(title, msg)
time.sleep(10)
DestroyWindow(self.hwnd)
def OnDestroy(self, hwnd, msg, wparam, lparam):
nid = (self.hwnd, 0)
Shell_NotifyIcon(NIM_DELETE, nid)
PostQuitMessage(0) # Terminate the app.
def balloon_tip(title, msg):
w=WindowsBalloonTip(title, msg)
if __name__ == '__main__':
balloon_tip("Title for popup", "This is the popup's message")
Bạn sẽ cần phải sử dụng một thư viện giao diện bên python 3 hoặc thư viện PyWin32. TkInter, bộ công cụ GUI đi kèm với python không hỗ trợ pop up của khay hệ thống.
thư viện trung tính Đa dạng mà hỗ trợ làm việc với khay hệ thống:
- wxPython
- PyGTK
- pyQT
Windows cụ thể thư viện mà hỗ trợ làm việc với khay hệ thống:
- py win32
thông tin/ví dụ về khay hệ thống cửa sổ pop up sử dụng wxPython trên cửa sổ:
Ok, ví dụ về cách thực hiện với wxPython? –
@RomanRdgz Hãy xem [ToasterBox] (http://xoomer.virgilio.it/infinity77/main/freeware.html#toasterbox) mà tôi tìm thấy trong http://stackoverflow.com/questions/2240674/cross-platform -desktop-notifier-in-python. – halex
thời gian gần đây tôi đã sử dụng gói Plyer để tạo ra các thông báo cross-platform mà không đau đớn, bằng cách sử dụng Notification
mặt tiền (có nhiều thứ thú vị khác đáng để xem).
Khá dễ dàng để sử dụng:
from plyer import notification
notification.notify(
title='Here is the title',
message='Here is the message',
app_name='Here is the application name',
app_icon='path/to/the/icon.png'
)
Khi tôi sử dụng lib này, tôi gặp lỗi từ 'python27_x64 \ lib \ site-packages \ plyer \ platforms \ win \ libs \ balloontip.py ", dòng 145, trong balloon_tip', của phương thức' WindowsBalloonTip (** kwargs) ', thông báo lỗi là:' TypeError: __init __() nhận đối số từ khóa không mong muốn 'ticker''. Đó là windows7 với python 2.7. – FaithReaper
... và kiểm tra repo, một vấn đề tương tự cũng đã được đăng và tác giả đề nghị cài đặt bản phát hành mới nhất trực tiếp từ Github, và giải quyết vấn đề. Tuyệt vời! 'pip install -I https://github.com/kivy/plyer/zipball/master' – FaithReaper
trong hệ thống Linux, bạn có thể sử dụng inbuilt lệnh notify-send
.
ntfy
thư viện có thể được sử dụng để gửi thông báo đẩy.
click here for ntfy documentation
cài đặt:
sudo pip install ntfy
ví dụ:
ntfy send "your message!"
ntfy send -t "your custom title" "your message"
Tôi sẽ thêm rằng đây là chương trình python được gọi từ dòng lệnh chứ không phải lệnh Python nội bộ – tc88
trình, nhưng tôi muốn nó được nhiều hơn "hiện đại", cái nhìn khác nhau và cảm thấy. Có thể thêm hình ảnh vào cửa sổ bật lên chẳng hạn. Có thể với apprach này? –
chưa thử, nhưng có thể đưa đường dẫn đến biểu tượng thay cho biểu tượngPathName có thể hoạt động –