枠線の太さは解りませんが、Treeview の背景色は上流ライブラリの不具合で
tcl/tk のバージョンが 8.6 の場合に発生します。
関連
背景色のみのパッチ(簡易版)
python
1
2root.tk.eval('''
3ttk::style map Treeview \
4 -foreground {disabled SystemGrayText \
5 selected SystemHighlightText} \
6 -background {disabled SystemButtonFace \
7 selected SystemHighlight}
8''')
python
1#!/usr/bin/env python
2
3import tkinter as tk
4from tkinter import ttk
5
6root = tk.Tk()
7style = ttk.Style()
8
9# 注意点: theme によって有効・無効になるスタイルがあります。
10# 例えば、このコードの場合は、theem_use("default") にすると
11# ttk.Frame 枠線の色が変わります。
12style.theme_use("clam")
13
14# 不具合対応パッチ
15root.tk.eval("""
16 ttk::style map Treeview \
17 -foreground {disabled SystemGrayText \
18 selected SystemHighlightText} \
19 -background {disabled SystemButtonFace \
20 selected SystemHighlight}
21""")
22
23style.configure("Treeview",
24 background="#eeeeff",
25 fieldbackground="#eeeeff",
26 # NOTE: Treeview にも border オプションはありますが、
27 # theme によって挙動が異なる為、目的の用途にはほぼ使えません。
28 borderwidth=0,
29)
30style.configure("Treeview.Heading",
31 background="#aaaaff",
32 borderwidth=0,
33 )
34style.configure("Tree.TFrame",
35 # ttk.Frame の場合、widget のオプションと,
36 # style のオプション両方で指定します。
37 # ここも theme 次第では挙動が変わります。
38 background="#aaaaff")
39
40## 外枠線の為に Frame を生成。
41#frame = tk.Frame(root, bd=4, bg="#aaaaff")
42frame = ttk.Frame(root, style="Tree.TFrame",
43 borderwidth=4, relief='solid')
44frame.pack()
45
46tree = ttk.Treeview(frame) # NOTE: 外枠の為に、親クラスにFrameを設定。
47tree.pack()
48tree.tag_configure("item", background="#eeeeff")
49parent = tree.insert("", tk.END, text="parent", tags="item")
50child = tree.insert(parent, tk.END, text="child", tags="item")
51root.mainloop()