当我将状态设置为 disabled
时,我试图更改ttk.Entr
小部件中单词的颜色,我查找了手册,有一个名为 disabledforeground
的选项,所以我编写了一个测试片段如下: (顺便说一句,我在 Python 2.7 下)
from Tkinter import *
from ttk import *
root=Tk()
style=Style()
style.configure("TEntry",disabledforeground='red')
entry_var=StringVar()
entry=Entry(root,textvariable=entry_var,state='disabled')
entry.pack()
entry_var.set('test')
mainloop()
但是结果显示"测试"的颜色没有变化,知道出了什么问题吗?
我认为禁用前景是 tk 小部件的一个选项,但不是 ttk 小部件的选项。在此页面上
http://wiki.tcl.tk/38127
您将在适用于 TK 小部件的部分代码中看到类似以下内容:
{-disabledforeground disabledForeground}
此处 -disabledforeground 是指配置选项,disabledforeground(不带前导减号)是指在页面底部附近定义的颜色:
set colors(disabledForeground) {#a3a3a3} ; # -disabledfg
您将在适用于 ttk 小部件的部分代码中看到类似以下内容:
{map -foreground disabled disabledForeground}
此处 -foreground 是配置选项,禁用是小部件可以处于的状态。同样,禁用前景是小部件处于该状态时要使用的实际颜色。
我不是 Tcl 程序员,所以我在这里从 tkinter 和 ttk 推断,但这是我能想到的对这段代码的唯一合理解释。
尝试使用 Style.map
而不是 configure
。
from Tkinter import *
from ttk import *
root=Tk()
style=Style()
style.map("TEntry",
foreground=[("active", "black"), ("disabled", "red")]
)
entry_var=StringVar()
entry=Entry(root,textvariable=entry_var,state='disabled')
entry.pack()
entry_var.set('test')
mainloop()