Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python/ttk】Treeviewウィジェットの見出しスタイルをカスタマイズする方法

PythonのTreeviewウィジェットは、アプリケーション内に表形式(テーブル風)のGUIを作成するために用意されたウィジェットです。行や列の追加、スクロール表示など多くの機能が組み込まれていますが、見た目(スタイル)を細かくカスタマイズしたい場合は、ttkのテーマ付きウィジェットとStyleクラスを利用するのが基本となります。

本記事では、ttk.Styleを使ってTreeviewウィジェットの見出し(ヘッダー)部分の背景色や文字色などを変更する方法を、サンプルコード付きでわかりやすく解説します。

見出しスタイルを変更する基本的な流れ

Treeviewの見出しスタイルは、スタイル名「Treeview.Heading」に対してconfigure()メソッドを実行することで編集できます。手順は以下の通りです。

  1. ttk.Style()でスタイルオブジェクトを作成する
  2. theme_use()でテーマを指定する(例:'clam')
  3. configure('Treeview.Heading', ...)で見出しのスタイルを設定する

なお、テーマによって見た目の挙動が異なるため、スタイルを確実に反映させたい場合は「clam」テーマの使用がおすすめです。

サンプルコード

次の例では、ttk.Styleのインスタンスを作成し、「Treeview.Heading」を対象に見出しの背景色を緑(green3)に設定しています。

# 必要なライブラリをインポート
from tkinter import *
from tkinter import ttk

# tkinterフレームのインスタンスを作成
win = Tk()

# ウィンドウサイズを設定
win.geometry('700x350')
s = ttk.Style()
s.theme_use('clam')

# Treeviewウィジェットの見出しスタイルを設定
s.configure('Treeview.Heading', background='green3')

# Treeviewウィジェットを追加
tree = ttk.Treeview(win, column=('c1', 'c2'), show='headings', height=8)
tree.column('#1', anchor=CENTER)
tree.heading('#1', text='ID')
tree.column('#2', anchor=CENTER)
tree.heading('#2', text='FName')

# Treeviewウィジェットにデータを挿入
tree.insert('', 'end', text='1', values=('1', 'Honda'))
tree.insert('', 'end', text='2', values=('2', 'Hyundai'))
tree.insert('', 'end', text='3', values=('3', 'Tesla'))
tree.insert('', 'end', text='4', values=('4', 'Volkswagen'))
tree.insert('', 'end', text='5', values=('5', 'Tata'))
tree.insert('', 'end', text='6', values=('6', 'Renault'))
tree.insert('', 'end', text='7', values=('7', 'Audi'))
tree.insert('', 'end', text='8', values=('8', 'BMW'))

tree.pack()

win.mainloop()

実行結果

上記のコードを実行すると、見出しの背景色が緑色にカスタマイズされた表が表示されたウィンドウが立ち上がります。

【Python/ttk】Treeviewウィジェットの見出しスタイルをカスタマイズする方法

応用:その他のスタイルオプション

configure()では背景色以外にも、さまざまなオプションを組み合わせて見出しを装飾できます。

  • foreground:見出しの文字色を変更する(例:foreground='white'
  • font:フォントの種類・サイズ・太字などを指定する(例:font=('Helvetica', 10, 'bold')
  • padding:見出しセル内の余白を調整する

また、見出しではなくデータ行(本体)側の背景色や文字色を変更したい場合は、スタイル名として「Treeview」を指定して同様にconfigure()を実行してください。用途に応じて使い分けることで、アプリケーションのUIをより洗練されたデザインに仕上げられます。


  1. Tkinterのttk.Entryウィジェットでフォントを変更する方法

    アプリケーションでは、ユーザーに氏名、電話番号、メールアドレス、住所などの情報を入力してもらう場面が多くあります。Tkinterでは、Entryウィジェットを使うことで、このようなテキスト入力を簡単に処理できます。さらに、ttkパッケージを利用すると、Entryウィジェットにモダンなスタイルを適用することが可能です。Entryウィジェットのフォントの種類、文字サイズ、フォントスタイルなどのプロパティを変更したい場合は、font(フォントファミリー サイズ スタイル)属性を使用します。このfontプロパティは、Entryウィジェットのコンストラクタ内で直接指定できます。コード例# tkinter

  2. PythonのTkinterでウィンドウのタイトルバーを編集・カスタマイズする方法

    Tkinterでは、プログラムを実行するとウィンドウやフレームが画面に表示されます。Tkinterの関数やモジュールはそれぞれ独立して構成されているため、特定の関数を使ってウィンドウの属性を柔軟にカスタマイズすることが可能です。Tkinterは、アプリケーションごとにデフォルトのルートウィンドウを自動的に作成します。このデフォルトのタイトルを変更・編集したい場合は、以下のメソッドを使用します。title(text= 任意のタイトル)それでは、実際にTkinterフレームのオブジェクトを生成してウィンドウを作成し、そのタイトルを編集してみましょう。サンプルコード# ライブラリをインポート fro