如何在 Tkinter 中为所有对话框(包括 Windows 上的消息框)设置一次窗口图标?

问题描述 投票:0回答:1

在使用 Tkinter 和 TtkBootstrap 的 Linux 上,您可以使用以下命令设置徽标一次:

logo = tb.PhotoImage(file="images/favicon.png")
root.iconphoto(True, logo)

这可确保徽标显示在每个顶层和 messagebox.showerror/info/warning 对话框中。

但是,在 Windows 上,您必须对每个顶级使用

.iconbitmap('images/favicon.ico')
。不幸的是,该图标不会出现在 messagebox.showerror/info/warning 对话框中,并且仅出现 Tkinter 徽标或 Ttkbootstrap 徽标。

Tkinter 中是否有任何功能可以让您在 Windows 上定义一次徽标,更重要的是,确保徽标出现在 messagebox.showerror/info/warning 对话框中?

我试图通过询问 ChatGPT 来找到一些东西,但它不知道,并且互联网上也没有任何相关问题。

python tkinter icons ttkbootstrap
1个回答
0
投票

.iconphoto(True, logo)
也应该适用于 Windows。

以下是一个例子:

import tkinter as tk
from tkinter import messagebox
import ttkbootstrap as tb

def show_dialog():
    messagebox.showinfo("Hello", "Hello World")

def show_window():
    win = tb.Toplevel()
    win.geometry("300x100")
    win.title("Secondary Window")

root = tk.Tk()
logo = tb.PhotoImage(file="lenna.png")
root.iconphoto(True, logo)

tk.Button(root, text="Window", command=show_window).pack(padx=100, pady=30)
tk.Button(root, text="Dialog", command=show_dialog).pack(padx=100, pady=30)

root.mainloop()

结果:

enter image description here enter image description here enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.