Skip to content

Instantly share code, notes, and snippets.

@wontoncc
Last active March 1, 2024 15:47
Show Gist options
  • Save wontoncc/1808234 to your computer and use it in GitHub Desktop.
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)
@abhijeetsc
Copy link

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

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

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

@guyverone
Copy link

here to say thank you.

@danielfain
Copy link

Works great on Windows 10. Thanks man!

@purplesyringa
Copy link

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

@frakman1
Copy link

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

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

@hao-lee
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
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!

@soyuznik
Copy link

soyuznik commented May 5, 2021

working on windows 10

@sdfiokpskiopdf
Copy link

working on windows 11

@fredericomattos
Copy link

working on Python 3.10 with windows 11

@Tunglies
Copy link

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