Notifikasi interaktif windows 10 menggunakan python

Sep 13 2020

Saya ingin tahu apakah mungkin menampilkan notifikasi dengan windows 10, yang melakukan tindakan tertentu saat ditekan. Saya tahu tentang plyerdan win10toasttetapi di kedua modul itu, saya tidak melihat cara untuk mengkonfigurasinya agar berfungsi dengan klik. Saya menginginkannya sehingga ketika saya menekannya, tautan akan terbuka atau beberapa fungsi akan dijalankan, untuk bekerja tkinter. Pertanyaan di SO tentang ini tidak terjawab atau tidak kompatibel sekarang. Apakah kalian punya ide?

Cuplikan 1:

from win10toast import ToastNotifier

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

Juga, meskipun memberikannya duration=60salah satu cara menutup secara otomatis setelah kira-kira. 5 detik.

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

Setelah beberapa penelitian saya menemukan win10toastbekerja dengan win32gui, dan beberapa konfigurasi dengannya dapat membuatnya bekerja. Tapi saya tidak yakin apa.

Terima kasih sebelumnya

Jawaban

1 Karthik Sep 13 2020 at 13:10

Anda dapat menggunakan callback_on_clickmetode untuk melakukan panggilan balik saat mengklik notifikasi.

Seperti disebutkan dalam thread instalasi callback_on_click ini, Anda perlu menginstal pip install -e git+https://github.com/Charnelx/Windows-10-Toast-Notifications.git#egg=win10toastkarena callback_on_clickbelum digabungkan dengan wintoast.

Anda akan mendapatkan pesan kesalahan tetapi versi baru Anda toastNotifierakan disalin dengan versi yang sudah ada.

Anda harus mengimpor from src.win10toast.win10toast import ToastNotifieralih-alih from win10toast import ToastNotifierinorder untuk mengakses callback_on_clickmetode ini.

Silakan periksa cuplikannya.

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

CATATAN- Pastikan Anda menggunakan threaded=Truein show_toast()sehingga program Anda akan diizinkan untuk dijalankan saat toast masih aktif. Kalau tidak, gui Anda akan membeku.