Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

python - Change Icon For Tkinter Messagebox

Is there a way to change the icon of a tkinter message box? Here is my code:

from tkinter import *
import tkinter.messagebox as messagebox

root = Tk()
messagebox.showinfo(title='Example',message='This is an example')
root.mainloop()

Is there an option to change the icon from the default tkinter feather to a custom ico?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Following are two possible solutions for your question:

1. Changing the title bar icon

Yes, we can set a custom icon for the title bar in tkinter.

Set custom icon for title bar

Code:

import tkinter as tk
window = tk.Tk()

# change title bar icon
window.iconbitmap('book_2.ico')

window.mainloop()

NOTE: Use .ico files with the iconbitmap() function

If you set a custom icon for the root window, then this same icon will be set as the title bar icon for all other child window(s) including the message boxes from messagebox module.

Root window and message box have the same custom icon

Code:

import tkinter as tk
import tkinter.messagebox as tkmb

window = tk.Tk()

# change title bar icon
window.iconbitmap('book_2.ico')

# same icon is also set for the message box
tkmb.showinfo(title='Info', message='Info message box')

window.mainloop()

2. Changing the icon inside message box

No you can not set a custom icon for displaying inside of a message box.

Message box icon

But you have four preset icon options to choose from, the options are:

  • error
  • info
  • question
  • warning

4 message box icon options

You can use them by specifying one of the above 4 values to the icon option.

import tkinter.messagebox as tkmb

tkmb.showinfo(title='Message Box', message='Error message', icon='error')
tkmb.showinfo(title='Message Box', message='Info message', icon='info')
tkmb.showinfo(title='Message Box', message='Question message', icon='question')
tkmb.showinfo(title='Message Box', message='Warning message', icon='warning')

NOTE: The default icon for a

  • showinfo() messagebox is info
  • showerror() messagebox is error
  • showwarning() messagebox is warning

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...