CTkMessagebox
A modern and fully customizable messagebox for CustomTkinter, A must-have extension pack!
Features
- Customize all elements inside the messagebox
- Add custom icons or images
- Add multiple options according to your wish
- No ugly looking header or borders
- Comes with 5 default icons
- Spawns at center of the screen/app
- Draggable window
- Fade-in/Fade-out window effect
Installation
pip install CTkMessagebox
How it looks?
Example
from CTkMessagebox import CTkMessagebox
import customtkinter
def show_info():
CTkMessagebox(title="Info", message="This is a CTkMessagebox!")
def show_checkmark():
CTkMessagebox(message="CTkMessagebox is successfully installed.",
icon="check", option_1="Thanks")
def show_error():
CTkMessagebox(title="Error", message="Something went wrong!!!", icon="cancel")
def show_warning():
msg = CTkMessagebox(title="Warning Message!", message="Unable to connect!",
icon="warning", option_1="Cancel", option_2="Retry")
if msg.get()=="Retry":
show_warning()
def ask_question():
msg = CTkMessagebox(title="Exit?", message="Do you want to close the program?",
icon="question", option_1="Cancel", option_2="No", option_3="Yes")
response = msg.get()
if response=="Yes":
app.destroy()
else:
print("Click 'Yes' to exit!")
app = customtkinter.CTk()
app.rowconfigure((0,1,2,3,4,5), weight=1)
app.columnconfigure(0, weight=1)
app.minsize(200,250)
customtkinter.CTkLabel(app, text="CTk Messagebox Examples").grid(padx=20)
customtkinter.CTkButton(app, text="Check CTkMessagebox", command=show_checkmark).grid(padx=20, pady=10, sticky="news")
customtkinter.CTkButton(app, text="Show Info", command=show_info).grid(padx=20, pady=10, sticky="news")
customtkinter.CTkButton(app, text="Show Error", command=show_error).grid(padx=20, pady=10, sticky="news")
customtkinter.CTkButton(app, text="Show Warning", command=show_warning).grid(padx=20, pady=10, sticky="news")
customtkinter.CTkButton(app, text="Ask Question", command=ask_question).grid(padx=20, pady=(10,20), sticky="news")
app.mainloop()
OPTIONS
Parameters | Description |
---|
master | set parent window (optional), the box will spawn at center of the parent window |
width | width of the window in px (optional) |
height | height of the window in px (optional) |
fg_color | forground color of the messagebox [middle portion] |
bg_color | background color of the messagebox |
title | title of the messagebox |
message | main message of the messagebox which will be shown at the center |
option_1 | the text on the first button [Default is 'OK'] |
option_2 | the text on the second button |
option_3 | the text on the last button |
options | directly pass a list containing the options in order |
button_color | color of the buttons |
text_color | color of the message-text |
title_color | color of the title-text |
button_text_color | color of the button-text |
button_hover_color | hover color of the buttons |
button_width | width of the buttons in px |
button_height | height of the buttons in px |
border_width | width of the border around the main frame [Default is 1] |
border_color | color of the frame border |
cancel_button | define the cancel button type: circle, cross or None |
cancel_button_color | color of the close button, set it to 'transparent' if you want to hide it |
icon | icon that will be shown in the messagebox [Default is the 'info' icon] |
icon_size | define the size of the icon image manually (tuple) |
corner_radius | corner roundness of the messagebox window [not applicable in linux] |
font | font of the messagebox text (tuple) |
header | add the original header back if you don't like overrideredirect (bool) |
topmost | disable the topmost window outside the app (bool) |
sound | enable the system bell sound when the window popups (bool) |
justify | position the buttons to center/right/left |
focus_option | select an option by default when Enter key is pressed |
fade_in_duration | enable a fade-in and fade-out animation (int, default is 0) |
Icons
Default icons:
(These icons are created using Paint.NET, free to use!)
For custom images, just use icon="image_path.png"
That's all, hope it will help in UI development!