如何为除 TButton 之外的所有 ttk 小部件配置地图?

How to configure map for all ttk widgets except TButton?

我正在使用 Tkinter 和 ttk 创建一个 GUI,我正在尝试创建一个自定义 map 以使 ttk 小部件在悬停时变为蓝色。我可以将其应用于所有小部件,并将 "." 作为第一个参数传递给 ttk.Style().map(...).

import tkinter as tk
import tkinter.ttk as ttk


root = tk.Tk()

style = ttk.Style()
style.map(".", background=[("active", "blue")])

button = ttk.Button(root, text="An example button")
button.pack()
scrollbar = ttk.Scrollbar(root)
scrollbar.pack()

root.mainloop()

但现在我想从该查询中排除 TButton。也就是说,我需要在悬停时将所有小部件 but TButton 设为蓝色。我该怎么做?

传递“.!TButton”和“!TButton”而不是“.”没有效果。

There is a root style whose name is '.'. To change some feature's default appearance for every widget, you can configure this style. For example, let's suppose that you want all text to be 12-point Helvetica (unless overriden by another style or font option).

所以我们可以通过简单地添加另一种样式来覆盖它:

style.map('TButton',background=[('active','#f0f0f0')])

请注意,您可能还想为您希望设置为默认值的每种样式执行此操作。

阅读 here 了解更多信息。