-
Star
(105)
You must be signed in to star a gist -
Fork
(22)
You must be signed in to fork a gist
-
-
Save wontoncc/1808234 to your computer and use it in GitHub Desktop.
# -- coding: utf-8 -- | |
from win32api import * | |
from win32gui import * | |
import win32con | |
import sys, os | |
import struct | |
import time | |
class WindowsBalloonTip: | |
def __init__(self, title, msg): | |
message_map = { | |
win32con.WM_DESTROY: self.OnDestroy, | |
} | |
# Register the Window class. | |
wc = WNDCLASS() | |
hinst = wc.hInstance = GetModuleHandle(None) | |
wc.lpszClassName = "PythonTaskbar" | |
wc.lpfnWndProc = message_map # could also specify a wndproc. | |
classAtom = RegisterClass(wc) | |
# Create the Window. | |
style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU | |
self.hwnd = CreateWindow( classAtom, "Taskbar", style, \ | |
0, 0, win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT, \ | |
0, 0, hinst, None) | |
UpdateWindow(self.hwnd) | |
iconPathName = os.path.abspath(os.path.join( sys.path[0], "balloontip.ico" )) | |
icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE | |
try: | |
hicon = LoadImage(hinst, iconPathName, \ | |
win32con.IMAGE_ICON, 0, 0, icon_flags) | |
except: | |
hicon = LoadIcon(0, win32con.IDI_APPLICATION) | |
flags = NIF_ICON | NIF_MESSAGE | NIF_TIP | |
nid = (self.hwnd, 0, flags, win32con.WM_USER+20, hicon, "tooltip") | |
Shell_NotifyIcon(NIM_ADD, nid) | |
Shell_NotifyIcon(NIM_MODIFY, \ | |
(self.hwnd, 0, NIF_INFO, win32con.WM_USER+20,\ | |
hicon, "Balloon tooltip",title,200,msg)) | |
# self.show_balloon(title, msg) | |
time.sleep(10) | |
DestroyWindow(self.hwnd) | |
def OnDestroy(self, hwnd, msg, wparam, lparam): | |
nid = (self.hwnd, 0) | |
Shell_NotifyIcon(NIM_DELETE, nid) | |
PostQuitMessage(0) # Terminate the app. | |
def balloon_tip(title, msg): | |
w=WindowsBalloonTip(msg, title) |
Thanks! But why *
missed on L3-4 and __init__
shows incorrectly?
Title and msg seem swapped, too, and there's a typo in the main function name ( ballon ). I've forked this Gist with the corrections: https://gist.github.com/4000505
I PEPped up @boppreh's version a bit and fixed the "no 2nd notification" issue that @endolith reported. It still has one issue, which is that only one notification at a time can display, so if a 2nd notification is attempted before the 1st has finished, the 2nd is ignored. https://gist.github.com/brousch/6523559
Ayy great in Windows 10!
Hi, this looks really great. But in windows 10 the notification does not persist in the action center. And if I try to call balloon_tip
more than once I get an error:
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
File "C:\Users\Lenovo\Documents\Python\temp.py", line 54, in balloon_tip
w=WindowsBalloonTip(msg, title)
File "C:\Users\Lenovo\Documents\Python\temp.py", line 26, in __init__
classAtom = RegisterClass(wc)
pywintypes.error: (1410, 'RegisterClass', 'Class already exists.')
It doesn't work, I get an error.
from win32api import *
ImportError: DLL load failed: %1 is not a Win32 valid application.
How do I change the Icon on the balloon tip? It doesnt work even after adding a .ico file by the name balloontip.ico on the root directory.
Can somebody please fork a copy in which notifications are persistent? I know this would include registering the program outside of the class, and unregistering it with with atexit, but I am unable to do so myself.
thanks man, that worked for me!
when I am running the same code I am not getting any type of notification only.
I am using Python 3.5 on Windows 10.
Hi guys, I've created this as an easy to use package
https://github.com/jithurjacob/Windows-10-Toast-Notifications
here to say thank you.
Works great on Windows 10. Thanks man!
In case you have "win32api" module missing, try pip install pypiwin32
.
Can anyone please tell me how to add a click bind to this notification. I want to open a website or do some task on the click and I am not able to bind it in the message map. Please help!
Never mind guys. Found it! https://github.com/jithurjacob/Windows-10-Toast-Notifications/pull/38
Hi guys, I've created this as an easy to use package
https://github.com/jithurjacob/Windows-10-Toast-Notifications
This is awesome! Thanks.
Hi guys, I've created this as an easy to use package
https://github.com/jithurjacob/Windows-10-Toast-Notifications
that is indeed awesome - thank you!
working on windows 10
working on windows 11
working on Python 3.10 with windows 11
working on Python 3.10 with Windows 11 Pro for Workstations Version 10.0.22621 Build 22621
Awesome! Just the thing I was looking for!