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

如何在单个Tkinter应用中为多个ttk Treeview设置不同表头样式

实现不同Treeview独立配置表头样式的方法

ttk控件的子元素样式遵循自定义前缀.父控件类名.子控件类名的命名规则,你可以为每个自定义Treeview样式单独配置对应的Heading子样式,具体修改方案如下:

完整修改后代码示例

import tkinter.font as tkfont
import tkinter.ttk as ttk

# 原有初始化逻辑保留
self.xs_font = tkfont.Font(family='Arial', size=9)
# 可单独定义不同表头的样式参数
self.home_header_font = tkfont.Font(family='Arial', size=9, weight='bold')
self.toplevel_header_font = tkfont.Font(family='Arial', size=11, weight='bold')

self.treeview = ttk.Style()
def fixed_map(option):#bug fix to allow highlighted lines in a treeview
    return [elm for elm in self.treeview.map('Treeview', query_opt=option) if elm[:2] != ('!disabled', '!selected')]
self.treeview.map('Treeview', foreground=fixed_map('foreground'),background=fixed_map('background'))#implement bug fix

# 原有Treeview主体样式不变
self.treeview.configure('home_tree.Treeview',font=self.xs_font,rowheight=20)# 首页Treeview主体样式
self.treeview.configure('toplevel_tree.Treeview',font=self.xs_font,rowheight=30)# 顶层窗口Treeview主体样式

# 替换原有全局表头配置,改为独立配置专属样式
self.treeview.configure('home_tree.Treeview.Heading',font=self.home_header_font,rowheight=25)# 首页Treeview专属表头
self.treeview.configure('toplevel_tree.Treeview.Heading',font=self.toplevel_header_font,rowheight=35)# 顶层窗口Treeview专属表头

注意事项

  • 创建Treeview实例时需显式绑定对应的自定义样式,绑定后表头会自动套用对应的子样式,无需额外给表头设置样式:
# 首页Treeview实例
home_tree = ttk.Treeview(父容器, style='home_tree.Treeview')
# 顶层窗口Treeview实例
toplevel_tree = ttk.Treeview(顶层窗口容器, style='toplevel_tree.Treeview')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:57:02