当我将状态设置为ttk.Entr
时,我试图更改disabled
小部件中单词的颜色,我查阅了手册,有一个名为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()
但结果显示“测试”的颜色没有变化,任何想法都有什么不对?
答案 0 :(得分:3)
我认为disabledforeground是tk小部件的一个选项,但不适用于ttk小部件。在这个页面上
您将在适用于tk小部件的部分代码中看到类似的内容:
{-disabledforeground disabledForeground}
这里-disabledforeground指的是配置选项而disabledforeground(没有前导减号)指的是在页面底部附近定义的颜色:
set colors(disabledForeground) {#a3a3a3} ; # -disabledfg
您将在适用于ttk小部件的部分代码中看到类似的内容:
{map -foreground disabled disabledForeground}
此处--foreground是配置选项,disabled是窗口小部件可以处于的状态。再次,disabledforeground是窗口小部件处于该状态时要使用的实际颜色。
我不是Tcl程序员,所以我在这里从tkinter和ttk推断,但这是我能想出的唯一合理解释的代码。
答案 1 :(得分:1)
尝试使用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()