Cửa sổ thông báo tương tác 10 sử dụng python
Tôi muốn biết liệu có thể hiển thị thông báo với windows 10 hay không, nó thực hiện một hành động cụ thể khi được nhấn. Tôi biết về plyervà win10toastnhưng trong cả hai mô-đun đó, tôi không thấy cách nào để cấu hình nó hoạt động với các lần nhấp. Tôi muốn nó để khi tôi nhấn vào nó, một liên kết sẽ được mở ra hoặc một số chức năng sẽ được chạy, để hoạt động tkinter. Các câu hỏi ở đây trên SO về điều này hiện chưa được trả lời hoặc không tương thích. Các bạn có ý kiến gì không?
Đoạn trích 1:
from win10toast import ToastNotifier
noti = ToastNotifier()
noti.show_toast('Random','Hello World',icon_path='ico.ico',duration=60)
Ngoài ra, mặc dù cho duration=60nó theo một trong hai cách sẽ tự động đóng sau khoảng. 5 giây.
Đoạn trích 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')
)
Sau một số nghiên cứu, tôi thấy có win10toasttác dụng win32guivà một số cấu hình với nó có thể làm cho nó hoạt động. Nhưng tôi không chắc điều gì.
Cảm ơn trước
Trả lời
Bạn có thể sử dụng callback_on_clickphương pháp để thực hiện gọi lại khi nhấp vào thông báo.
Như đã đề cập trong chuỗi cài đặt callback_on_click này, bạn sẽ cần cài đặt pip install -e git+https://github.com/Charnelx/Windows-10-Toast-Notifications.git#egg=win10toastkhi callback_on_clickchưa được hợp nhất wintoast.
Bạn sẽ gặp lỗi nhưng phiên bản mới của toastNotifierbạn sẽ được sao chép với phiên bản hiện có.
Bạn sẽ phải nhập from src.win10toast.win10toast import ToastNotifierthay vì from win10toast import ToastNotifierinorder để truy cập callback_on_clickphương thức.
Vui lòng kiểm tra đoạn mã.
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()
LƯU Ý- Đảm bảo rằng bạn sử dụng threaded=Truetrong show_toast()để phần còn lại của chương trình được phép thực thi trong khi bánh mì nướng vẫn hoạt động. Nếu không gui của bạn sẽ đóng băng.