首页 > 解决方案 > 如何为除 TButton 之外的所有 ttk 小部件配置地图?

问题描述

我正在使用 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从这个查询中排除。也就是说,我需要在悬停时使所有小部件都变成蓝色 TButton。我怎样才能做到这一点?

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

标签: pythontkintertkttk

解决方案


有一个名为“.”的根样式。要更改每个小部件的某些功能的默认外观,您可以配置此样式。例如,假设您希望所有文本都是 12 磅 Helvetica(除非被其他样式或字体选项覆盖)。

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

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

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

阅读此处了解更多信息。


推荐阅读