Skip to content

Instantly share code, notes, and snippets.

@wontoncc
Last active April 11, 2026 10:33
Show Gist options
  • Select an option

  • Save wontoncc/1808234 to your computer and use it in GitHub Desktop.

Select an option

Save wontoncc/1808234 to your computer and use it in GitHub Desktop.
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)
@deeman30rus

Copy link
Copy Markdown

thanks man, that worked for me!

@abhijeetsc

Copy link
Copy Markdown

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

Copy link
Copy Markdown

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

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

@guyverone

Copy link
Copy Markdown

here to say thank you.

@danielfain

Copy link
Copy Markdown

Works great on Windows 10. Thanks man!

@purplesyringa

Copy link
Copy Markdown

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

@frakman1

Copy link
Copy Markdown

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

Copy link
Copy Markdown

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

Copy link
Copy Markdown

@hao-lee

hao-lee commented Oct 29, 2019

Copy link
Copy Markdown

@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

ukowa commented May 21, 2020

Copy link
Copy Markdown

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!

@soyuznik

soyuznik commented May 5, 2021

Copy link
Copy Markdown

working on windows 10

@sdfiokpskiopdf

Copy link
Copy Markdown

working on windows 11

@fredericomattos

Copy link
Copy Markdown

working on Python 3.10 with windows 11

@Tunglies

Copy link
Copy Markdown

working on Python 3.10 with Windows 11 Pro for Workstations Version 10.0.22621 Build 22621

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment