【问题标题】:Change Icon For Tkinter Messagebox更改 Tkinter 消息框的图标
【发布时间】:2015-08-04 16:52:09
【问题描述】:

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

from tkinter import *
import tkinter.messagebox as messagebox

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

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

【问题讨论】:

    标签: python python-3.x tkinter


    【解决方案1】:

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

    1.更改标题栏图标

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

    代码:

    import tkinter as tk
    window = tk.Tk()
    
    # change title bar icon
    window.iconbitmap('book_2.ico')
    
    window.mainloop()
    

    注意:.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()
    

    2。更改消息框内的图标

    不能设置自定义图标以显示在消息框内。

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

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

    您可以通过为 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')
    

    注意:

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

    【讨论】:

    • 即使我使用“iconbitmap()”,标题图标也不会改变。如果有人知道,还有其他可能的原因吗?我还将在下面的答案中发布我的图像以及代码
    • 所以没有办法只删除它?
    • 有什么办法可以去掉askyesno框内的图标?当我输入None 时,它默认为info:/
    【解决方案2】:

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

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

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

    【讨论】:

    • 首先,你说的是哪个图标?如果是messagebox 内的那种火箭,那么什么都没有改变。如果您在谈论根图标,那么我不知道,因为在此 OS X 上,没有显示图标。
    • “羽毛”是出现在 Python 3 tkinter 应用程序标题栏中的图像,如 here 所示。上面的代码可以在 Windows 上运行,但是我没有 OSX 机器来测试它。
    • @nbro - 看起来那种窗口图标根本不会出现在 OSX 应用程序中,所以我对它不适合你并不感到惊讶。但是,它应该适用于 OP。 :)
    • @TigerhawkT3:在 macOS 上可以通过更改根窗口的iconphoto(True, tk.PhotoImage(file='img.png')) 来实现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    相关资源
    最近更新 更多