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

【Python】TkinterのTreeviewウィジェットに垂直スクロールバーを追加する方法

Tkinterで複数のカラム(列)を持つ項目リストを表示したい場合、Treeviewウィジェットを使用するのが便利です。Treeviewウィジェットを使えば、大量のデータをリスト形式で表示でき、見た目や動作も柔軟にカスタマイズできます。

しかし、表示する項目数が多くなると、ウィジェットの高さに収まらないデータが出てきます。そこで活躍するのが垂直スクロールバーです。Treeviewウィジェットにスクロールバーを連携させるには、Scrollbarのインスタンスを作成し、commandオプションでTreeviewと相互に接続(configure)します。

それでは、実際のコード例を見ながら、具体的な実装方法を確認していきましょう。

コード例

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

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

# ウィンドウサイズを設定
win.geometry("700x350")

# Styleウィジェットのインスタンスを作成
style = ttk.Style()
style.theme_use('clam')

# Treeviewウィジェットを追加し、選択モードを設定
tree = ttk.Treeview(win, column=("c1", "c2"), show='headings', height=8, selectmode="browse")
tree.column("#1", anchor=CENTER, stretch=NO)
tree.heading("#1", text="Fname")
tree.column("#2", anchor=CENTER, stretch=NO)
tree.heading("#2", text="Lname")

# Treeviewウィジェットにデータを挿入
tree.insert('', 'end', text="1", values=('Alex', 'M'))
tree.insert('', 'end', text="2", values=('Belinda', 'Cross'))
tree.insert('', 'end', text="3", values=('Ravi', 'Malviya'))
tree.insert('', 'end', text="4", values=('Suresh', 'Rao'))
tree.insert('', 'end', text="5", values=('Amit', 'Fernandiz'))
tree.insert('', 'end', text="6", values=('Raghu', 'Sharma'))
tree.insert('', 'end', text="7", values=('David', 'Nash'))
tree.insert('', 'end', text="8", values=('Ethan', 'Plum'))
tree.insert('', 'end', text="9", values=('Janiece', '-'))

# Treeviewウィジェットに垂直スクロールバーを追加
treeScroll = ttk.Scrollbar(win)
treeScroll.configure(command=tree.yview)
tree.configure(yscrollcommand=treeScroll.set)
treeScroll.pack(side=RIGHT, fill=BOTH)
tree.pack()

win.mainloop()

コードのポイント解説

このコードで重要なのは、以下の2行です。

  • treeScroll.configure(command=tree.yview):スクロールバーを操作したときに、Treeviewの表示領域が連動して移動するよう設定しています。
  • tree.configure(yscrollcommand=treeScroll.set):逆に、Treeview側でスクロールが発生したとき(マウスホイール操作など)に、スクロールバーのつまみ位置が正しく更新されるよう設定しています。

このように双方向で接続することで、スクロールバーとTreeviewがシームレスに連携します。また、pack(side=RIGHT, fill=BOTH)により、スクロールバーがウィンドウ右端に縦方向いっぱいに配置されます。

実行結果

上記のコードを実行すると、Treeviewウィジェット内に名前リストが表示され、右側には連動して動作する垂直スクロールバーが配置されたウィンドウが表示されます。スクロールバーをドラッグすると、リストの内容がスムーズにスクロールします。

  1. Tkinterを使ってファイルのハードコピー(印刷)を行う方法

    Tkinterは、ローカルシステム内のファイルとやり取りできる機能を開発者に提供するPythonの標準GUIライブラリです。この記事では、filedialogモジュールとwin32apiモジュールを組み合わせて、選択したファイルをプリンターから印刷(ハードコピー)する方法を解説します。必要なモジュールのインストールまず、これらのパッケージを使用するために、環境にモジュールをインストールしておく必要があります。win32apiはWindows専用のライブラリのため、以下のコマンドでpywin32をインストールしてください。pip install pywin32サンプルコード# 必要なライブラリを

  2. Tkinterでスプラッシュ画面を作成する方法をわかりやすく解説

    アプリケーションを起動した際に一瞬だけ表示される「スプラッシュ画面」。ロゴや読み込み中表示などを映し出すことで、アプリに洗練された印象を与えられます。Pythonの標準GUIライブラリであるTkinterを使えば、このスプラッシュ画面も簡単に実装できます。スプラッシュ画面作成の基本手順Tkinterでスプラッシュ画面を作成するには、以下の手順に従います。ラベルなどを配置したスプラッシュ画面を作成するoverrideredirectメソッドを使って、スプラッシュ画面を枠なし(ボーダーレス)にするスプラッシュ画面の直後に表示されるメインウィンドウを生成する関数を定義するafterメソッドを使って、