Notifica interattiva windows 10 utilizzando python
Volevo sapere se era possibile mostrare la notifica con Windows 10, che esegue un'azione specifica quando viene premuto. Lo so plyere win10toastma in entrambi i moduli non vedo un modo per configurarlo per funzionare con i clic. Lo volevo in modo che quando lo premo, verrà aperto un collegamento o verrà eseguita una funzione con cui lavorare tkinter. Le domande qui su SO al riguardo sono o senza risposta o incompatibili ora. Ragazzi, avete qualche idea?
Snippet 1:
from win10toast import ToastNotifier
noti = ToastNotifier()
noti.show_toast('Random','Hello World',icon_path='ico.ico',duration=60)
Inoltre, nonostante lo dia duration=60in entrambi i modi, si chiude automaticamente dopo ca. 5 secondi.
Snippet 2:
from plyer.utils import platform
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.' + ('ico' if platform == 'win' else 'png')
)
Dopo alcune ricerche ho scoperto che win10toastfunziona win32guie alcune configurazioni potrebbero farlo funzionare. Ma non sono sicuro di cosa.
Grazie in anticipo
Risposte
È possibile utilizzare il callback_on_clickmetodo per eseguire una richiamata facendo clic sulla notifica.
Come accennato in questo thread, l' installazione di callback_on_click è necessario installare pip install -e git+https://github.com/Charnelx/Windows-10-Toast-Notifications.git#egg=win10toastpoiché callback_on_clicknon è ancora stato unito a wintoast.
Riceverai un errore ma la tua nuova versione di toastNotifierverrà copiata con quella esistente.
Dovresti importare from src.win10toast.win10toast import ToastNotifierinvece di from win10toast import ToastNotifierinorder per accedere al callback_on_clickmetodo.
Si prega di controllare lo snippet.
from src.win10toast.win10toast import ToastNotifier
import tkinter as tk
from tkinter import *
import webbrowser
top = tk.Tk()
top.geometry('50x50')
top.title('shop')
url = 'http://www.google.com'
def notify():
noti.show_toast('Random','Hello World',duration=60, threaded=True,callback_on_click=action)
def action():
webbrowser.open_new(url)
print("Done")
noti = ToastNotifier()
btn = Button(top, text= "Enter", command=notify)
btn.pack()
top.mainloop()
NOTA: assicurati di utilizzare in threaded=Truein show_toast()modo che il resto del programma possa essere eseguito mentre il brindisi è ancora attivo. Altrimenti la tua interfaccia grafica si bloccherebbe.