質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Q&A

解決済

1回答

4427閲覧

python ttk treeviewで背景色が変更にならない

OKARA

総合スコア63

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

0グッド

1クリップ

投稿2018/07/31 04:31

前提・実現したいこと

ttkのtreeviewを利用して表データの表示を行っていますが
見やすさの点から、表示されるデータの背景色を1行毎に変更
したいのですがうまくいかず困っています

イメージ説明

該当のソースコード

python

1 def CREATE_WORKING_DGV(self,ALL_FLAG): 2 self.TREEV = TTK.Treeview(self.TB_W1) 3 4 # 列インデックスの作成 5 self.TREEV["columns"] = (1,2,3,4,5) 6 7 # 表スタイルの設定 8 self.TREEV["show"] = "headings" 9 10 # 各列の設定 11 self.TREEV.column(1,width=120,stretch=False) 12 self.TREEV.column(2,width=60,stretch=False) 13 self.TREEV.column(3,width=40,stretch=False) 14 self.TREEV.column(4,width=100,stretch=False) 15 self.TREEV.column(5,width=60,stretch=False) 16 17 # 各列のヘッダー設定 18 self.TREEV.heading(1,text="KEY") 19 self.TREEV.heading(2,text="状態") 20 self.TREEV.heading(3,text="目標") 21 self.TREEV.heading(4,text="バーコード") 22 self.TREEV.heading(5,text="オーダ") 23 24 # 値の登録 25 i=0 26 for CUR in M.INST_COMMON.LIST_ORDER_INFO: 27 ary_temp =[] 28 ary_temp.append(CUR.ORDER_KEY) 29 ary_temp.append("未着手") 30 ary_temp.append(CUR.COST) 31 ary_temp.append(CUR.BARCODE) 32 ary_temp.append(CUR.ORDER_NUMBER) 33 34 self.TREEV.insert("","end",values=ary_temp) 35 36 # tagが奇数か偶数かをビット演算で判定 37 if i & 1: 38 # tagが奇数(レコードは偶数)の場合のみ、背景色の設定 39 self.TREEV.tag_configure(i,background="#CCFFFF") 40 41 i+=1 42 43 # ツリービューの配置 44 self.TREEV.pack(expand=1,padx=5,pady=2) 45 46 # スクロールバーの配置 47 self.SCRLBAR = TTK.Scrollbar(self.TB_W1,orient=TK.HORIZONTAL,command=self.TREEV.xview) 48 self.TREEV.configure(xscroll=self.SCRLBAR.set) 49 self.SCRLBAR.pack(expand=1,fill=TK.X) 50

試したこと

デバッグ実行すると「if i & 1:」の条件は有効で、1行ごとに
「self.TREEV.tag_configure(i,background="#CCFFFF")」の
コードが実行されていることは確認しました

補足情報(FW/ツールのバージョンなど)

python:3.6.5
tkinter:8.6

開発環境はWin10
IDEはvisual studio codeを使っています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

「treeview tkinter row color」でググるとttk-treeview-alternate-row-colorsがヒットします。

self.TREEV.insert("","end",values=ary_temp)

tagを設定していないからではないでしょうか。

Python

1self.TREEV.insert("","end",values=ary_temp, tags=(str(i),))

Python

1self.TREEV.tag_configure(i,background="#CCFFFF")

あと行単位に一行ずつtag_configureを設定しなくても、最初に定義すればよいみたいですね。


enumerate関数が使えるかと

diff

1-for CUR in M.INST_COMMON.LIST_ORDER_INFO: 2+for i, CUR in enumerate(M.INST_COMMON.LIST_ORDER_INFO, 1):

投稿2018/07/31 05:01

編集2018/07/31 05:27
umyu

総合スコア5846

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

OKARA

2018/07/31 06:17

回答ありがとうございました 「tags」が必要なんですね tagsを設定したらこちらが思う通りの結果になりました また「enumerate」の提案もありがとうございます pythonには便利な関数があるんですね 勉強になりました 本当にありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問