web-dev-qa-db-ja.com

tkinter ttk treeview色付きの行

タグとtag_configureを使用して、tkinter treeviewオブジェクトの行に色を設定しようとしています。

かなり古く、Python3では機能しないように見える行の色付けについて、以前に議論がありました。

ttkツリービュー:代替行の色

簡単な例を追加しました。私にとって、挿入コマンドの前または後のどちらでtag_configureを実行しても、すべての行は白のままです。

import tkinter as tk
import tkinter.ttk as ttk

root = tk.Tk()
w = tk.Label(root, text="Hello, world!")
w.pack()

lb= ttk.Treeview(root, columns=['number', 'text'], show="headings", height =20)
lb.tag_configure('gr', background='green')
lb.column("number", anchor="center", width=10)    
lb.insert('',tk.END, values = ["1","testtext1"], tags=('gr',))
lb.insert('',tk.END, values = ["2","testtext2"])

lb.pack()

root.mainloop()

何が変更されたか、何が欠けていますか?

編集:これは回避策を備えた新しい既知のバグであるようですが、私はこれを機能させていません: https:// core .tcl-lang.org/tk/tktview?name = 509cafafae

EDIT2:現在、tkバージョン8.6.10(Build hfa6e2cd_0、Channel conda-forge)とpython 3.7を使用しています。 .3。このバージョンのpythonとtkでこのエラーを再現できますか?

6
tfv

そのチャック666の答えはトリックをしました: https://stackoverflow.com/a/60949800/43529

このコードは機能します

import tkinter as tk
import tkinter.ttk as ttk

def fixed_map(option):
    # Returns the style map for 'option' with any styles starting with
    # ("!disabled", "!selected", ...) filtered out

    # style.map() returns an empty list for missing options, so this should
    # be future-safe
    return [Elm for Elm in style.map("Treeview", query_opt=option)
            if Elm[:2] != ("!disabled", "!selected")]



root = tk.Tk()

style = ttk.Style()
style.map("Treeview", 
          foreground=fixed_map("foreground"),
          background=fixed_map("background"))

w = tk.Label(root, text="Hello, world!")
w.pack()

lb= ttk.Treeview(root, columns=['number', 'text'], show="headings", height =20)
lb.tag_configure('gr', background='green')
lb.column("number", anchor="center", width=10)    
lb.insert('',tk.END, values = ["1","testtext1"], tags=('gr',))
lb.insert('',tk.END, values = ["2","testtext2"])

lb.pack()

root.mainloop()

彼が現れればボーナスを獲得したと思うので、Chuck666が彼の答えをここにコピーしてくれることを願っています。

0
tfv