Python 更改Tkinter Messagebox的图标

Python 更改Tkinter Messagebox的图标,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,有没有办法更改tkinter消息框的图标? 这是我的密码: from tkinter import * import tkinter.messagebox as messagebox root = Tk() messagebox.showinfo(title='Example',message='This is an example') root.mainloop() 是否有将图标从默认tkinter羽毛更改为自定义图标的选项?是的,有这样的选项。假设您的根Tkinter实例名为root,那

有没有办法更改tkinter消息框的图标? 这是我的密码:

from tkinter import *
import tkinter.messagebox as messagebox

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

是否有将图标从默认tkinter羽毛更改为自定义图标的选项?

是的,有这样的选项。假设您的根Tkinter实例名为
root
,那么您的导入语句是来自Tkinter import*的
,并且您的图像文件名为
'ico.gif'

root.tk.call('wm', 'iconphoto', root._w, PhotoImage(file='ico.gif'))

在创建
root
对象之后和弹出
消息框之前调用此方法。图标将应用于根对象以及
消息框

以下是两种可能的问题解决方案:

1。更改标题栏图标

是的,我们可以在tkinter中为标题栏设置自定义图标

代码:

import tkinter as tk
window = tk.Tk()

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

window.mainloop()
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()
注意:使用带有
iconbitmap()函数的.ico文件

如果为根窗口设置自定义图标,则该图标将设置为所有其他子窗口(包括messagebox模块中的消息框)的标题栏图标

代码:

import tkinter as tk
window = tk.Tk()

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

window.mainloop()
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。更改消息框内的图标

您不能设置用于在消息框内显示的自定义图标

但您有四个预设图标选项可供选择,选项包括:

  • 错误
  • 信息
  • 问题
  • 警告

您可以通过将上述4个值中的一个指定给图标选项来使用它们

注意:默认图标

  • showinfo()
    messagebox是信息
  • showerror()
    messagebox出错
  • showwarning()
    messagebox是警告

首先,你说的是哪个图标?如果是
消息框中的那种火箭
,则没有任何变化。如果你说的是根图标,那么我不知道,因为在这个OSX上,没有显示图标。“羽毛”是出现在Python 3
tkinter
应用程序标题栏中的图像。上面的代码可以在Windows上运行,但我没有OSX机器来测试它。@nbro-它看起来根本不像OSX应用程序中出现的那种窗口图标,所以我对它不适用于您并不感到惊讶。但是,它应该适用于OP.:)@TigerhawkT3:可以通过更改根窗口的
iconphoto(True,tk.PhotoImage(file='img.png'))
来在macOS上执行此操作。即使我使用“iconbitmap()”,标题图标也不会更改。如果有人知道,还有其他可能的原因吗?我还将在下面的回答中发布我的图片和代码,所以没有办法删除它?