Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Balloon tip module, Python, using win32gui.
# -- 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)
@chriskiehl

This comment has been minimized.

Copy link

chriskiehl commented Aug 15, 2012

Awesome! Just the thing I was looking for!

@clippit

This comment has been minimized.

Copy link

clippit commented Aug 27, 2012

Thanks! But why * missed on L3-4 and __init__ shows incorrectly?

@boppreh

This comment has been minimized.

Copy link

boppreh commented Nov 2, 2012

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

@brousch

This comment has been minimized.

Copy link

brousch commented Sep 11, 2013

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

@endolith

This comment has been minimized.

@davidcorbin

This comment has been minimized.

Copy link

davidcorbin commented Nov 21, 2015

Ayy great in Windows 10!

@Thomas-Rudge

This comment has been minimized.

Copy link

Thomas-Rudge commented Dec 1, 2015

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.')
@DarkRedman

This comment has been minimized.

Copy link

DarkRedman commented Jan 2, 2016

It doesn't work, I get an error.

from win32api import *
ImportError: DLL load failed: %1 is not a Win32 valid application.

@aswinpj

This comment has been minimized.

Copy link

aswinpj commented Mar 29, 2016

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.

@Aanand-Kainth

This comment has been minimized.

Copy link

Aanand-Kainth commented Jun 9, 2016

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.

@deeman30rus

This comment has been minimized.

Copy link

deeman30rus commented Aug 17, 2016

thanks man, that worked for me!

@abhijeetsc

This comment has been minimized.

Copy link

abhijeetsc commented Mar 12, 2017

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.

@jithurjacob

This comment has been minimized.

Copy link

jithurjacob commented May 29, 2017

Hi guys, I've created this as an easy to use package

https://github.com/jithurjacob/Windows-10-Toast-Notifications

@guyverone

This comment has been minimized.

Copy link

guyverone commented Jun 27, 2017

here to say thank you.

@danielfain

This comment has been minimized.

Copy link

danielfain commented Mar 23, 2018

Works great on Windows 10. Thanks man!

@imachug

This comment has been minimized.

Copy link

imachug commented Sep 1, 2018

In case you have "win32api" module missing, try pip install pypiwin32.

@frakman1

This comment has been minimized.

Copy link

frakman1 commented Nov 27, 2018

To use this feature, you would write code like this:

import balloontip as bt

bt.balloon_tip("My Title", "My Message")

and get something that looks like this (on Windows 7):

image

@vineethpisvas1

This comment has been minimized.

Copy link

vineethpisvas1 commented Nov 30, 2018

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!

@vineethpisvas1

This comment has been minimized.

@hao-lee

This comment has been minimized.

Copy link

hao-lee commented Oct 29, 2019

@jithurjacob

Hi guys, I've created this as an easy to use package

https://github.com/jithurjacob/Windows-10-Toast-Notifications

This is awesome! Thanks.

@ukowa

This comment has been minimized.

Copy link

ukowa commented May 21, 2020

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!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.