Interaktive Benachrichtigungsfenster 10 mit Python
Ich wollte wissen, ob es möglich ist, eine Benachrichtigung mit Windows 10 anzuzeigen, die beim Drücken eine bestimmte Aktion ausführt. Ich weiß über plyerund win10toastin beiden Modulen sehe ich keine Möglichkeit, es so zu konfigurieren, dass es mit Klicks funktioniert. Ich wollte es so, dass, wenn ich es drücke, ein Link geöffnet wird oder eine Funktion ausgeführt wird, mit der ich arbeiten kann tkinter. Fragen hier auf SO dazu sind entweder unbeantwortet oder jetzt nicht kompatibel. Habt ihr eine Idee?
Snippet 1:
from win10toast import ToastNotifier
noti = ToastNotifier()
noti.show_toast('Random','Hello World',icon_path='ico.ico',duration=60)
Auch wenn duration=60es so oder so gegeben wird, schließt es automatisch nach ca. 5 Sekunden.
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')
)
Nach einigen Recherchen fand ich win10toastArbeiten mit win32guiund einige Konfigurationen damit könnten es funktionieren lassen. Aber ich bin mir nicht sicher was.
Danke im Voraus
Antworten
Mit der callback_on_clickMethode können Sie einen Rückruf ausführen, wenn Sie auf die Benachrichtigung klicken.
Wie in diesem Thread erwähnt , müssten Sie die Installation callback_on_click installieren, pip install -e git+https://github.com/Charnelx/Windows-10-Toast-Notifications.git#egg=win10toastda sie callback_on_clicknoch nicht zusammengeführt wurde wintoast.
Sie erhalten eine Fehlermeldung, aber Ihre neue Version von toastNotifierwird mit der vorhandenen Version kopiert.
Sie müssten importieren from src.win10toast.win10toast import ToastNotifieranstatt from win10toast import ToastNotifierinorder, um auf die callback_on_clickMethode zuzugreifen .
Bitte überprüfen Sie das 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()
HINWEIS - Stellen Sie sicher, dass Sie threaded=Truein verwenden, show_toast()damit der Rest Ihres Programms ausgeführt werden kann, während der Toast noch aktiv ist. Sonst würde deine GUI einfrieren.