Treeviewの指定行の背景色と文字色を変更したいです。
tkinter ttk treeview色付きの行
を参考に文字色の色を設定できましたが、背景色が変更できていません。
(行クリック時の選択状態のときは別の色にしたいです。)
また、あとから指定行の色を変更したい場合はどうすればいいですか。
例えば、ddd,eee,fff
を青色から緑色に変更する。
Python
1from tkinter import ttk 2import tkinter as tk 3 4def fixed_map(option): 5 # Fix for setting text colour for Tkinter 8.6.9 6 # From: https://core.tcl.tk/tk/info/509cafafae 7 # 8 # Returns the style map for 'option' with any styles starting with 9 # ('!disabled', '!selected', ...) filtered out. 10 11 # style.map() returns an empty list for missing options, so this 12 # should be future-safe. 13 return [elm for elm in s.map('Treeview', query_opt=option) if 14 elm[:2] != ('!disabled', '!selected')] 15 16 17if __name__ == "__main__": 18 win = tk.Tk() 19 win.geometry("500x400") 20 21 # 幅取得 22 win.update_idletasks() # winfo_width() の戻り値 1 回避 23 win_width = win.winfo_width() 24 25 # 引き伸ばし 26 win.rowconfigure(0, weight=1) 27 win.columnconfigure(0, weight=1) 28 29 # スタイル_テーマ 30 s = ttk.Style() 31 s.theme_use("clam") 32 33 s.map('Treeview', 34 foreground=fixed_map('foreground'), 35 background=fixed_map('background') 36 ) 37 38 39 tree = ttk.Treeview(win) 40 # 列数 41 tree["columns"] = (1, 2, 3) 42 tree["show"] = "headings" 43 # 列幅指定 44 tree.column(1, width=int(win_width/3)) 45 tree.column(2, width=int(win_width/3)) 46 tree.column(3, width=int(win_width / 3)) 47 # ヘッダ 48 tree.heading(1, text="Data1") 49 tree.heading(2, text="Data2") 50 tree.heading(3, text="Data3") 51 tree.grid(row=0, column=0, sticky="nsew") 52 53 tree.tag_configure("mytag1", background="red", foreground="blue") 54 tree.tag_configure("mytag2", background="green", foreground="yellow") 55 56 # インサート 57 id = [] 58 id.append(tree.insert("", "end", value=["aaa", "bbb", "ccc"])) 59 id.append(tree.insert("", "end", value=["ddd", "eee", "fff"], tags="mytag1")) 60 id.append(tree.insert("", "end", value=["ggg", "hhh", "iii"], tags="mytag2")) 61 62 # 後からtag変更 63 #tree.item(id[1], tags="") 64 65 # 全id取得 66 #print(tree.get_children()) 67 68 win.mainloop()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/18 05:48 編集
2020/11/18 06:14 編集
2020/11/18 06:17
2020/11/18 08:08