You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tkinter Treeview样式异常:第二个Treeview继承首个样式求助

解决Tkinter中Treeview样式相互继承的问题

问题根源在于ttk的样式是全局生效的——你直接修改了默认的Treeview样式,所有Treeview实例都会自动继承这个样式配置,导致第二个Treeview和第一个样式一致。

要实现两个Treeview的独立样式,你需要为第二个Treeview创建自定义样式类,而不是修改默认的Treeview样式。具体步骤如下:

修改第二个Treeview的代码

为第二个Treeview创建专属的自定义样式(比如命名为Wear.Treeview),并在创建Treeview时指定使用这个样式:

# 创建自定义样式,继承自默认Treeview样式
style_wear = ttk.Style(firsttreeframe)
# 配置自定义Treeview的样式
style_wear.configure("Wear.Treeview", font=(None, 12))
# 配置自定义Treeview的表头样式
style_wear.configure("Wear.Treeview.Heading", font=(None, 13))

# 创建Treeview时,通过style参数指定使用自定义样式
tree02 = ttk.Treeview(firsttreeframe, 
                      column=("c1", "c2","c3", "c4","c5", "c6","c7", "c8","c9","c10", "c11","c12", "c13","c14", "c15","c16", "c17","c18"), 
                      show='headings', 
                      height=5,
                      style="Wear.Treeview")  # 关键:指定自定义样式

tree02['show']='headings'
tree02.grid(row=1,column=0,columnspan=4,sticky=EW)

(可选)优化第一个Treeview的样式

如果你想彻底避免第一个Treeview影响其他组件,也可以为它创建专属的自定义样式:

class tree:
    def __init__(self):
        # 创建Treeview时指定自定义样式
        self.tree = ttk.Treeview(frametree, height=28, style="Custom.Treeview")
        self.tree.grid(row=1,column=0,padx=2)
        self.tree.column("#0",width=250, stretch=NO)
        self.tree.bind("<ButtonRelease-1>", self.OnClick)
        self.tree.tag_configure('highlight', background='lightblue')
        
        style_def = ttk.Style(frametree)
        # 配置专属的自定义样式
        style_def.configure("Custom.Treeview", background="#FFDEAD", fieldbackground="#FFDEAD", foreground="Black", font=(None, 14), rowheight=30)
        style_def.configure("Custom.Treeview.Heading", font=(None, 12))

原理说明

ttk的样式系统采用命名空间机制:

  • 默认样式(如Treeview)是全局的,修改后所有同类型组件都会继承
  • 自定义样式(如Wear.Treeview、Custom.Treeview)是独立的,只有指定了style参数的组件会使用该样式
  • 自定义样式会自动继承对应基础组件的样式,你只需要修改需要差异化的属性即可

内容的提问来源于stack exchange,提问作者Prashant Priyadarshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 11:15:35