【问题标题】:Python TKinter on Mac OS does not show message box specific iconsMac OS 上的 Python TKinter 不显示消息框特定图标
【发布时间】:2020-04-24 14:06:34
【问题描述】:

在 Mac OS 中,tkinter 消息框不会为不同类型的消息框显示不同的图标(警告除外)。错误、信息和问题图标都是“Python Spaceship”图标,并不特定于错误、信息或问题。查看以“Screen Shot ...”开头的附件

在 Windows 中,消息框显示上下文相关图标。见附件 WindowsMessageBoxOutput.jpg

如何在 Mac OS 上加载上下文相关图标?

我用于生成/显示消息框的代码如下:

import tkinter as tk
import tkinter.messagebox as tkmb
from tkinter import Button

def show_message_boxes():
    tkmb.showinfo(title='Info Box', message='Info with info icon', icon='info')
    tkmb.showinfo(title='Info Box', message='Info with error icon', icon='error')
    tkmb.showinfo(title='Info Box', message='Info with question icon', icon='question')
    tkmb.showinfo(title='Info Box', message='Info with warning icon', icon='warning')

    tkmb.showinfo(title='Info Box', message='Info box with info icon', icon='info')
    tkmb.showerror(title='Error Box', message='Error box with default icon', icon='error')
    tkmb.showwarning(title='Warning Box', message='Warning box with default icon', icon='warning')

    tkmb.showinfo(title='Info Box', message='Info box with default icon')
    tkmb.showerror(title='Error Box', message='Error box with default icon')
    tkmb.showwarning(title='Warning Box', message='Warning box with default icon')

window = tk.Tk()

but = Button(window, text ='Click', command = show_message_boxes, width=20, height=10)
but.grid(row=0, column=0)

window.mainloop()

注意:我尝试了各种选项来尝试生成带有图标的消息框(因此上面代码中的各种调用)。

环境

我在 Mac OS 上运行以下内容:

  • 莫哈韦 10.14.6
  • Python 3.7.5
  • tkinter 8.5

图片:

【问题讨论】:

  • 试试 .showinfo(title='Info Box', message='Info with info icon', bitmap="info")
  • @stovfl 不知道为什么我之前的评论消失了。抱歉,如果这是重复的。上面的代码示例完全按照您的建议进行尝试,(最后一个消息框调用的第三个)在 Mac OS 上,图标问题仍然存在 - 没有显示信息图标。
  • @stovfl 位图无法解决问题,并在 Windows 和 Mac 上导致错误。我添加了以下行: tkmb.showinfo(title='Info Box', message='Info with info icon', bitmap='info') 最终结果是以下错误消息。由于尺寸限制,无法全部提供给您。 _tkinter.TclError: bad option "-bitmap": must be -default, -detail, -icon, -message, -parent, -title, -type, or -command

标签: python macos tkinter tkmessagebox


【解决方案1】:

FWIW,我在以下位置看到相同的行为:

  • 操作系统 10.15.5
  • Python 3.8.3
  • tkinter 8.6

在 Windows 和 Linux 上按预期工作,我可以使用“icon”参数覆盖默认的消息框图标类型。

看起来这个问题已经有一段时间了:Why can't I change the icon on a tkMessagebox.askyesno() on OS X?

【讨论】:

  • 这不是问题的答案。我认为这可能更适合作为评论。
  • 同意,但我无法发表评论,因为它是一个新帐户。我会移动它......不管是否,我需要 50 声望。谢谢。
猜你喜欢
  • 2019-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多