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

如何修改tkinter中ttk.PanedWindow组件的背景颜色

解决方案

你修改样式不生效是两个原因:

  1. fieldbackground属性的配置方式错误,不需要额外加.field后缀,应该直接绑定到你的自定义Treeview样式上
  2. 部分操作系统默认的ttk主题不支持自定义样式修改,需要手动切换支持样式自定义的主题(比如clam、alt等)

修改步骤

  • 切换ttk主题,在创建Style对象后添加一行代码:
style.theme_use('clam')
  • 修正Treeview的样式配置,删除错误的my.Treeview.field配置行,把fieldbackground参数加到my.Treeview的配置中:
style.configure('my.Treeview', background='orange', foreground='grey', fieldbackground='green')
  • 若需要修改Treeview选中行的样式,可以补充map配置:
style.map('my.Treeview',
          background=[('selected', 'purple')],
          foreground=[('selected', 'white')])

完整可运行的修改后代码

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import tkinter.ttk as ttk
import tkinter as tk


root = tk.Tk()
root['background'] = 'pink'
root.geometry('1200x400+0+100')

style = ttk.Style()
# 切换支持自定义样式的主题
style.theme_use('clam')
style.configure('my.TPanedwindow', background='black')
# 把fieldbackground参数加到Treeview样式配置中
style.configure('my.Treeview', background='orange', foreground='grey', fieldbackground='green')
# 可选:修改选中行样式
style.map('my.Treeview',
          background=[('selected', 'purple')],
          foreground=[('selected', 'white')])
style.configure('my.Treeview.Heading', background='blue', foreground='red')

pw = ttk.PanedWindow(root, cursor='sb_h_double_arrow',
                     orient=tk.HORIZONTAL,
                     style='my.TPanedwindow',
                     width=1000, height=200)
pw.grid(row=0, column=0)

b = ttk.Button(pw, text='Test ttk.PanedWindow')
pw.add(b)


def create_treeview(parent):
    # Create Treeview
    Cols = ('#01', '#02', '#03', '#04', '#05', '#06')
    tv = ttk.Treeview(parent, columns=Cols, height=2,
                      displaycolumn=['#05', '#06', '#01',
                                     '#02', '#03', '#04'],
                      style='my.Treeview',
                      selectmode='extended', takefocus=True)
    # Setup column & it's headings
    tv.column('#0', stretch=0, minwidth=100, width=100, anchor='w')
    tv.column('#01', stretch=0, anchor='n', width=70)
    tv.column('#02', stretch=0, anchor='n', width=80)
    tv.column('#03', stretch=0, anchor='n', width=75)
    tv.column('#04', stretch=0, anchor='w')
    tv.column('#05', stretch=0, anchor='e', width=80)
    tv.column('#06', stretch=0, anchor='n', width=70)
    tv.heading('#0', text=' Directory ', anchor='w')
    tv.heading('#01', text='#01', anchor='center')
    tv.heading('#02', text='#02', anchor='center')
    tv.heading('#03', text='#03', anchor='center')
    tv.heading('#04', text='#04', anchor='w')
    tv.heading('#05', text='#05', anchor='center')
    tv.heading('#06', text='#06', anchor='center')
    return tv


tv = create_treeview(pw)
pw.add(tv)
v0 = ('', '', '', '', 'xxx', str('home'), '', '')
tv.insert('', '0', iid='home',
          text='Hello',
          open=True,
          tag='dir',
          values=v0
          )

root.mainloop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:15:03