python - Style.map(background = ['state', 'any_color']) 如何影响 ttk.Button?
问题描述
代码:
import tkinter as tk
from tkinter import ttk
win = tk.Tk()
style = ttk.Style()
style.theme_use('default')
style.configure('styled.TButton', foreground = 'blue', background = 'yellow')
style.map('styled.TButton', foreground = [('pressed', 'red')], background = [('disabled','yellow')])
btn = ttk.Button(win, text = 'Styled Button', style = 'styled.TButton')
btn.pack()
win.mainloop()
输出:
相比:
如果我们修改如下,
style.map('styled.TButton', foreground = [('pressed','red')], background = [('active','yellow')])
输出保持不变。
问题:
两者有何不同?
解决方案
它们之间的区别在于disabled
按钮禁用时使用的active
状态颜色和启用时使用的状态颜色。你可以简单地通过改变它的状态来禁用你的按钮,如下所示:
btn['state'] = 'disabled'
我稍微修改了你的代码,这样你就可以看到它们之间的区别:
import tkinter as tk
from tkinter import ttk
win = tk.Tk()
style = ttk.Style()
style.theme_use('default')
style.configure('styled.TButton', foreground = 'blue', background = 'yellow')
style.map('styled.TButton', foreground = [('pressed', 'red')], background = [('active','yellow'), ('disabled','blue')])
btn = ttk.Button(win, text = 'Styled Button', style = 'styled.TButton')
btn.pack()
btn['state'] = 'disabled'
win.mainloop()
因此,如果您的按钮被禁用,它将是蓝色的,但如果它被启用,它将是黄色的。
推荐阅读
- java - 如何在 Android 中共享 MP3 文件 + 文本?
- python - 在 Python 中,如何提取以相同模式开头但没有不同结尾的多个文本块?
- javascript - 创建自定义控件并关联到 HTML 元素
- apache-kafka - Kafka Consumer 多租户
- amazon-web-services - Glue 虚拟视图(已创建 terraform)未出现在 Athena 中
- json - 如何将数据从 JSON 放入标签
- acumatica - 处理多张发票并将它们全部显示在一个报告中,例如打印发票/备忘录报告在 Acumatica 中的工作方式
- python - 通过字符串索引以获取数字出现后的所有字母
- ajax - jsf中带有ajax valueChange事件的表单字段的部分呈现
- objective-c - UIDragInteraction / UIDropItem 获取预览帧