'Windows notification with button using python
I need to make a program that alerts me with a windows notification, and I found out that this can be simply done with the following code.
I don't care what library I use
from win10toast import ToastNotifier
toast = ToastNotifier()
toast.show_toast("alert","text")
This code gives that following alert
However, I want there to be a button on the notification so I can click it and it will lead me to a url.
Like this example.
Is this possible?
I just found this website about toast contents can anyone help me use this with python?
Solution 1:[1]
This type of behavior is not supported in the currently released version of Windows-10-Toast-Notifications. However, a contributor created a pull request that adds functionality for a callback_on_click
parameter that will call a function when the notification is clicked.
This has yet to be merged into the master branch, and given how long it's been since the library has been updated, I wouldn't count on it happening anytime soon. However, you can still install this modified version of the library to make use of this feature:
- First, you'll need to uninstall the current version of
win10toast
from your environment (e.g.,pip uninstall win10toast
). - Next, you'll need to install the modified version (e.g.,
pip install git+https://github.com/Charnelx/Windows-10-Toast-Notifications.git#egg=win10toast
).
Then, you can create a toast like this:
toast.show_toast(title="Notification", msg="Hello, there!", callback_on_click=your_callback_function)
A complete working example:
from win10toast import Toast
toast = ToastNotifier()
toast.show_toast(title="Notification", msg="Hello, there!", callback_on_click=lambda: print("Clicked!"))
When you click on the notification, you should see "Clicked!" appear in the Python console.
Important: This will only work if you're using the modified version of the library I mentioned above. Otherwise you will get the error: TypeError: show_toast() got an unexpected keyword argument 'callback_on_click'
.
Solution 2:[2]
You should try Zroya.
Example:
import zroya
status = zroya.init(
app_name="NotifyBot",
company_name="MyBotCorp",
product_name="NoBo",
sub_product="core",
version="v01"
)
if not status:
print("Initialization failed")
# zroya is imported and initialized
template = zroya.Template(zroya.TemplateType.ImageAndText4)
#Adds text:
template.setFirstLine("Example notification")
#Adds the button
template.addAction("Ok")
zroya.show(template)
Ouput Example
You can read more here: https://malja.github.io/zroya/index.html
Sorry for not posting this sooner.
Solution 3:[3]
Here is what I have found.
For installing the library:
pip install winotify
The code that you are looking for:
from winotify import Notification, audio
toast = Notification(app_id = "Notification",
title = "Alert",
msg = "Text",
duration = "long",
icon = r"FullPath.ico"
)
toast.set_audio(audio.Mail, loop=False)
toast.add_actions(label="URL Button", launch = "https://stackoverflow.com")
toast.show()
"FullPath.ico" is the full path of the file to put an icon to the notification.
To do this you can press "Ctrl + Shift + Right Click On Mouse" on the icon file and click on "Copy as path". Then paste it into the double quotation marks instead of "FullPath.ico".
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | JoshG |
Solution 2 | IdkWhatToCallMe |
Solution 3 | Arda Kandemir |