tkinter ttk Entry widget -disabledforeground

时间:2012-11-20 11:45:23

标签: tkinter configure ttk tkinter-entry

当我将状态设置为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()

但结果显示“测试”的颜色没有变化,任何想法都有什么不对?

2 个答案:

答案 0 :(得分:3)

我认为disabledforeground是tk小部件的一个选项,但不适用于ttk小部件。在这个页面上

http://wiki.tcl.tk/38127

您将在适用于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()