tk 样式自定义保存/存储在哪里?

dan*_*tra 5 python tk-toolkit tkinter ttk python-3.x

采取这个非常简单的代码示例:

import tkinter as tk
from tkinter import ttk
    
root = tk.Tk()
    
s = ttk.Style()
s.theme_use('vista')
s.map("Mod.TCombobox",fieldbackground=[('readonly', 'red')])
Run Code Online (Sandbox Code Playgroud)

你能告诉我Mod.TCombobox自定义样式保存或存储在哪里吗?我的意思是,有没有办法检索所有可用的已定义样式选项的列表?(“标准”和“定制”都可能)。

我尝试查看官方 Python 文档,但似乎找不到答案。

(PS我尝试看一下s.element_names(),但毫不奇怪,它不在那里......)

编辑:

为了澄清一点,首先,我并不是要求提供可用主题列表(我知道可以使用命令获取s.theme_names())。

也就是说,假设我现在定义一个新规则,例如:

s.map("Mod.TEntry",fieldbackground=[('readonly', 'red')])
Run Code Online (Sandbox Code Playgroud)

我要问的是:是否有命令或任何方式可以检索自定义的 tk 样式规则列表,例如本例中的 ['Mod.TCombobox', 'Mod.TEntry'] ?(只要有可能,我什至会满足于同时包含自定义和非自定义样式规则定义的列表,将我的自定义定义样式与“标准”样式混合/在一起,例如“TCombobox”、“TEntry”等。 ..)。

同样,当使用样式布局命令时,例如:

s.layout('MyCustomTCB', s.layout('TCombobox'))
Run Code Online (Sandbox Code Playgroud)

作为问题的第二部分:在哪里或如何检索包含我创建的所有自定义样式布局的列表?

(PS 即使我不是在这里问这个,我还是要感谢 Bryan Oakley,他为我提供了ttk 库源代码的链接,这对于了解标准内置 tk 主题样式的问题非常有用规则和布局。)

使用Python 3

Atl*_*435 1

您的标题的答案tk 样式自定义保存/存储在哪里?TIP 48中写道:

当前的实现使用线程本地存储来保存动态数据。由于大多数数据不是特定于线程的,因此可以将其更改为更节省内存的方案。

解决您的其他问题是否可以检索已定义样式的列表。我没有找到明显的方法来做到这一点,无论是在 TIP 48 定义的方法中,还是样式手册页中,源代码中也没有指示这样的列表。