# The Windows native message box.
import sys
import ctypes # An included library with Python install.
MB_OK = 0x0
MB_OKCANCEL = 0x1
MB_ABORTRETRYIGNORE = 0x2
MB_YESNOCANCEL = 0x3
MB_YESNO = 0x4
MB_RETRYCANCEL = 0x5
MB_ICONHAND = MB_ICONSTOP = MB_ICONERRPR = 0x10
MB_ICONQUESTION = 0x20
MB_ICONEXCLAIMATION = 0x30
MB_ICONASTERISK = MB_ICONINFOMRAITON = 0x40
MB_DEFAULTBUTTON1 = 0x0
MB_DEFAULTBUTTON2 = 0x100
MB_DEFAULTBUTTON3 = 0x200
MB_DEFAULTBUTTON4 = 0x300
MB_SETFOREGROUND = 0x10000
MB_TOPMOST = 0x40000
runningOnPython2 = sys . version_info [ 0 ] == 2
if runningOnPython2 :
messageBoxFunc = ctypes . windll . user32 . MessageBoxA
else : # Python 3 functions.
messageBoxFunc = ctypes . windll . user32 . MessageBoxW
def alert ( text = ' ' , title = ' ' , button = ' OK ' ) :
""" Displays a simple message box with text and a single OK button. Returns the text of the button clicked on. """
messageBoxFunc ( 0 , text , title , MB_OK | MB_SETFOREGROUND | MB_TOPMOST )
return button
def confirm ( text = ' ' , title = ' ' , buttons = [ ' OK ' , ' Cancel ' ] ) :
""" Displays a message box with OK and Cancel buttons. Number and text of buttons can be customized. Returns the text of the button clicked on. """
retVal = messageBoxFunc ( 0 , text , title , MB_OKCANCEL | MB_ICONQUESTION | MB_SETFOREGROUND | MB_TOPMOST )
if retVal == 1 or len ( buttons ) == 1 :
return buttons [ 0 ]
elif retVal == 2 :
return buttons [ 1 ]
else :
assert False , ' Unexpected return value from MessageBox: %s ' % ( retVal )
'''
def prompt ( text = ' ' , title = ' ' , default = ' ' ) :
""" Displays a message box with text input, and OK & Cancel buttons. Returns the text entered, or None if Cancel was clicked. """
pass
def password ( text = ' ' , title = ' ' , default = ' ' , mask = ' * ' ) :
""" Displays a message box with text input, and OK & Cancel buttons. Typed characters appear as *. Returns the text entered, or None if Cancel was clicked. """
pass
'''