Fenêtres de notification interactives 10 utilisant Python

Sep 13 2020

Je voulais savoir s'il était possible d'afficher une notification avec Windows 10, qui effectue une action spécifique lorsque vous appuyez sur. Je connais plyeret win10toastmais dans ces deux modules, je ne vois aucun moyen de le configurer pour qu'il fonctionne avec des clics. Je le voulais pour que lorsque j'appuie dessus, un lien soit ouvert ou une fonction soit exécutée, pour travailler avec tkinter. Les questions ici sur SO à ce sujet sont soit sans réponse soit incompatibles maintenant. Avez-vous une idée?

Extrait 1:

from win10toast import ToastNotifier

noti = ToastNotifier()
noti.show_toast('Random','Hello World',icon_path='ico.ico',duration=60)

De plus, malgré le fait de le donner dans les duration=60deux sens, il se ferme automatiquement après env. 5 secondes.

Extrait 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')
)

Après quelques recherches, j'ai trouvé des win10toasttravaux avec win32gui, et une configuration avec cela pourrait le faire fonctionner. Mais je ne sais pas quoi.

Merci d'avance

Réponses

1 Karthik Sep 13 2020 at 13:10

Vous pouvez utiliser la callback_on_clickméthode pour effectuer un rappel en cliquant sur la notification.

Comme mentionné dans cette installation de thread callback_on_click, vous devrez installer pip install -e git+https://github.com/Charnelx/Windows-10-Toast-Notifications.git#egg=win10toasttel qu'il callback_on_clickn'est pas encore fusionné avec wintoast.

Vous obtiendrez une erreur mais votre nouvelle version de toastNotifiersera copiée avec la version existante.

Vous devrez importer from src.win10toast.win10toast import ToastNotifierau lieu de dans l'ordre from win10toast import ToastNotifierpour accéder à la callback_on_clickméthode.

Veuillez vérifier l'extrait.

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()

REMARQUE- Assurez-vous d'utiliser threaded=Truein show_toast()afin que le reste de votre programme soit autorisé à s'exécuter tant que le toast est toujours actif. Sinon, votre interface graphique se figerait.