1

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()

但结果显示“测试”的颜色没有变化,知道出了什么问题吗?

4

2 回答 2

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 推断,但这是我能想出的对这段代码的唯一合理解释。

于 2013-07-27T22:54:40.970 回答
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()
于 2012-11-20T13:15:40.123 回答