una - ¿Cómo crear un mensaje emergente de la bandeja del sistema con python?(Windows)
tkinter python para impacientes (5)
En el sistema Linux, puede usar el comando incorporado de notify-send
.
ntfy
biblioteca ntfy
se puede utilizar para enviar notificaciones push.
Haga clic aquí para la documentación ntfy
instalación:
sudo pip install ntfy
ejemplos:
ntfy send "your message!"
ntfy send -t "your custom title" "your message"
Me gustaría saber cómo crear un mensaje emergente en la bandeja del sistema con python. Los he visto en muchos programas, pero es difícil encontrar recursos para hacerlo fácilmente con cualquier idioma. ¿Alguien sabe alguna biblioteca para hacer esto en Python?
Esta es la forma sencilla de mostrar notificaciones en windows 10 usando python: module win10toast .
Requisitos :
- pypiwin32
- herramientas de configuración
Instalación :
>> pip install win10toast
Ejemplo :
from win10toast import ToastNotifier
toaster = ToastNotifier()
toaster.show_toast("Demo notification",
"Hello world",
duration=10)
Necesitará utilizar una biblioteca GUI de python de terceros o la biblioteca pywin32. TkInter, el kit de herramientas GUI que viene incluido con python no admite ventanas emergentes de la bandeja del sistema.
Bibliotecas multiformes neutrales que admiten trabajar con la bandeja del sistema:
- wxPython
- PyGTK
- PyQT
Biblioteca específica de Windows que admite trabajar con la bandeja del sistema:
- pywin32
Información / ejemplo de ventanas emergentes del sistema que usa wxpython en windows:
Recientemente utilicé el paquete Plyer para crear notificaciones multiplataforma sin dolor, usando la fachada de Notification
(tiene muchas otras cosas interesantes que vale la pena echar un vistazo).
Bastante fácil de usar:
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''
)
Con la ayuda de la biblioteca pywin32
puede usar el siguiente código de ejemplo que encontré 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")