更改 Tkinter 消息框的图标

zak*_*100 6 python tkinter python-3.x

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

from tkinter import *
import tkinter.messagebox as messagebox

root = Tk()
messagebox.showinfo(title='Example',message='This is an example')
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

是否可以选择将图标从默认的 tkinter 羽毛更改为自定义 ico?

Som*_*ury 10

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

1.更改标题栏图标

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

为标题栏设置自定义图标

代码:

import tkinter as tk
window = tk.Tk()

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

window.mainloop()
Run Code Online (Sandbox Code Playgroud)

注意:.ico文件与iconbitmap()函数一起使用

如果您为根窗口设置自定义图标,那么这个相同的图标将被设置为所有其他子窗口的标题栏图标,包括来自messagebox模块的消息框。

根窗口和消息框具有相同的自定义图标

代码:

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()
Run Code Online (Sandbox Code Playgroud)

2.更改消息框内的图标

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

消息框图标

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

  • 错误
  • 信息
  • 警告

4个消息框图标选项

您可以通过为icon选项指定上述 4 个值之一来使用它们。

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')
Run Code Online (Sandbox Code Playgroud)

注意:默认图标

  • showinfo()消息框是信息
  • showerror()消息框是错误的
  • showwarning()消息框是警告


Tig*_*kT3 5

是的,有这样的选择。假设你的根 Tkinter 实例被调用root,你的导入语句是from tkinter import *,你的图像文件被命名为'ico.gif'

root.tk.call('wm', 'iconphoto', root._w, PhotoImage(file='ico.gif'))
Run Code Online (Sandbox Code Playgroud)

在创建root对象之后和弹出messagebox. 该图标将应用于根对象以及messagebox.

  • @TigerhawkT3:可以通过更改根窗口的`iconphoto(True, tk.PhotoImage(file='img.png'))` 在 macOS 上执行此操作。 (2认同)