回答編集履歴

3

スクリーンショットを掲載

2021/07/12 07:53

投稿

teamikl
teamikl

スコア8681

test CHANGED
@@ -152,6 +152,8 @@
152
152
 
153
153
  root.mainloop()
154
154
 
155
+ ```
155
156
 
156
157
 
158
+
157
- ```
159
+ ![イメージ説明](95c85e27fce220e13cd5e79dcff3933d.png)

2

サンプルコードを追加

2021/07/12 07:53

投稿

teamikl
teamikl

スコア8681

test CHANGED
@@ -41,3 +41,117 @@
41
41
  ''')
42
42
 
43
43
  ```
44
+
45
+
46
+
47
+ ----
48
+
49
+
50
+
51
+ ```python
52
+
53
+ #!/usr/bin/env python
54
+
55
+
56
+
57
+ import tkinter as tk
58
+
59
+ from tkinter import ttk
60
+
61
+
62
+
63
+ root = tk.Tk()
64
+
65
+ style = ttk.Style()
66
+
67
+
68
+
69
+ # 注意点: theme によって有効・無効になるスタイルがあります。
70
+
71
+ # 例えば、このコードの場合は、theem_use("default") にすると
72
+
73
+ # ttk.Frame 枠線の色が変わります。
74
+
75
+ style.theme_use("clam")
76
+
77
+
78
+
79
+ # 不具合対応パッチ
80
+
81
+ root.tk.eval("""
82
+
83
+ ttk::style map Treeview \
84
+
85
+ -foreground {disabled SystemGrayText \
86
+
87
+ selected SystemHighlightText} \
88
+
89
+ -background {disabled SystemButtonFace \
90
+
91
+ selected SystemHighlight}
92
+
93
+ """)
94
+
95
+
96
+
97
+ style.configure("Treeview",
98
+
99
+ background="#eeeeff",
100
+
101
+ fieldbackground="#eeeeff",
102
+
103
+ # NOTE: Treeview にも border オプションはありますが、
104
+
105
+ # theme によって挙動が異なる為、目的の用途にはほぼ使えません。
106
+
107
+ borderwidth=0,
108
+
109
+ )
110
+
111
+ style.configure("Treeview.Heading",
112
+
113
+ background="#aaaaff",
114
+
115
+ borderwidth=0,
116
+
117
+ )
118
+
119
+ style.configure("Tree.TFrame",
120
+
121
+ # ttk.Frame の場合、widget のオプションと,
122
+
123
+ # style のオプション両方で指定します。
124
+
125
+ # ここも theme 次第では挙動が変わります。
126
+
127
+ background="#aaaaff")
128
+
129
+
130
+
131
+ ## 外枠線の為に Frame を生成。
132
+
133
+ #frame = tk.Frame(root, bd=4, bg="#aaaaff")
134
+
135
+ frame = ttk.Frame(root, style="Tree.TFrame",
136
+
137
+ borderwidth=4, relief='solid')
138
+
139
+ frame.pack()
140
+
141
+
142
+
143
+ tree = ttk.Treeview(frame) # NOTE: 外枠の為に、親クラスにFrameを設定。
144
+
145
+ tree.pack()
146
+
147
+ tree.tag_configure("item", background="#eeeeff")
148
+
149
+ parent = tree.insert("", tk.END, text="parent", tags="item")
150
+
151
+ child = tree.insert(parent, tk.END, text="child", tags="item")
152
+
153
+ root.mainloop()
154
+
155
+
156
+
157
+ ```

1

修正: 紛らわしいかもしれないので不要な情報を削除

2021/07/11 16:36

投稿

teamikl
teamikl

スコア8681

test CHANGED
@@ -41,75 +41,3 @@
41
41
  ''')
42
42
 
43
43
  ```
44
-
45
-
46
-
47
- ----
48
-
49
- ```python
50
-
51
-
52
-
53
- def fixture_treeview_tag_config(style):
54
-
55
- # NOTE: https://bugs.python.org/issue36468
56
-
57
- def fixed_map(option):
58
-
59
- # Fix for setting text colour for Tkinter 8.6.9
60
-
61
- # From: https://core.tcl.tk/tk/info/509cafafae
62
-
63
- #
64
-
65
- # Returns the style map for 'option' with any styles starting with
66
-
67
- # ('!disabled', '!selected', ...) filtered out.
68
-
69
-
70
-
71
- # style.map() returns an empty list for missing options, so this
72
-
73
- # should be future-safe.
74
-
75
- return [elm for elm in style.map('Treeview', query_opt=option) if
76
-
77
- elm[:2] != ('!disabled', '!selected')]
78
-
79
-
80
-
81
- style.map('Treeview',
82
-
83
- foreground=fixed_map('foreground'),
84
-
85
- background=fixed_map('background'))
86
-
87
-
88
-
89
- # Remove dot focus on "#0" column
90
-
91
- style.layout('Treeview.Item',
92
-
93
- [('Treeitem.padding',
94
-
95
- {'children': [('Treeitem.indicator', {'side': 'left', 'sticky': ''}),
96
-
97
- ('Treeitem.image', {'side': 'left', 'sticky': ''}),
98
-
99
- ('Treeitem.text', {'side': 'left', 'sticky': ''})],
100
-
101
- 'sticky': 'nswe'})])
102
-
103
-
104
-
105
-
106
-
107
- # main側で呼び出し
108
-
109
-
110
-
111
- fixture_treevbiew_tag_config(ttk.Style())
112
-
113
-
114
-
115
- ```