可以删除ttk样式选项吗?

Can a ttk style option be deleted?

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

import tkinter.ttk as ttk

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

据我所知 Shipman and the ttk man page 唯一的可能性是清除上面代码最后一行中显示的选项值 ('maroon' -> '')。

是否可以从“1.TEntry”中删除选项 'foreground'?更好的是,是否可以完全删除“1.TEntry”?

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

我遇到了类似的情况。根据您的情况,最简单的方法是配置 ttk.Entry 小部件,使 style="TEntry".

例如

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