可以删除ttk样式选项吗?

时间:2015-05-21 10:54:26

标签: python tkinter tk ttk

如何删除ttk样式?我正在对包含ttk样式的代码进行单元测试,并且每个代码都需要在测试夹具的拆卸方法中删除,否则测试1中的样式设置会影响测试2的结果。 在下面的简化示例中,我为第1列设置了样式。

import tkinter.ttk as ttk

style = ttk.Style()
style.configure('1.TEntry', **{'foreground': 'maroon'})
style.configure('1.TEntry', **{'foreground': ''})

据我所知Shipmanttk man page,唯一可能是清算期权价值(' maroon' - >'' )显示在上面代码的最后一行。

是否可以删除选项'前景'来自' 1.TEntry'?更好的是,是否可以完全删除' 1.TEntry'?

2 个答案:

答案 0 :(得分:2)

这从未实施过。在Tcl / Tk中,可以使用从属解释器创建这种测试,并丢弃整个测试环境。在Python中,我认为最接近的等价物是创建一个线程,在该线程中加载Tk并在测试后销毁它。这应该隔离各种Tk实例。在ttk中,一旦我们创建了一个布局或样式选项,Tcl中就没有方法可以从包含它们的表中删除这些项。有关最后一个字,请参阅Tcl ttk man page,但您看不到ttk::style layout delete或等效命令。

答案 1 :(得分:0)

我陷入了类似情况。在这种情况下,最简单的方法是将ttk.Entry小部件配置为style="TEntry"

例如

entry = ttk.Entry(..., style="1.TEntry") # setting maroon foreground
...
entry.config(style="TEntry") # removing maroon foreground
相关问题