頭の中は異空間

ものづくり中心

【Python】【Tk】treeview(表)に横スクロールバーを付ける

treeviewで横スクロールが出来ないと不便なのでつけよう、というものです。表以外の形式でも出来ると思います(未検証)。

 

コードとしては

frame = ...(frame初期化)
tree = ...(treeview初期化)
tree.pack()
hscrollbar = ttk.Scrollbar(frame, orient = tk.HORIZONTAL, command=tree.xview)
tree.configure(xscrollcommand=lambda f, l: hscrollbar.set(f, l))
hscrollbar.pack(fill='x')

で出来ます。

先にtree.pack()しておくことで、スクロールバーを表の下部につけることが出来ます。見て分かる通り同じframe内にtreeviewおよびスクロールバーを収める必要があります。

hscrollbar.pack()するときfill='x'がないと、スクロールバーのサイズが最小化されてしまって使い物になりません。

 

余談ですが、下記リンクの

autoscroll

を使うことで、ウィジェットのサイズによってスクロールバーをつけたり消したり出来ます。

python 2.7 - Horizontal scrolling won't activate for ttk Treeview widget - Stack Overflow

 

なお、縦スクロールバーも同様につけることが出来るものの、デフォルトでホイールに縦スクロールが対応しているようなので、わざわざつける必要があるのかは疑問。デザイン面を考慮するなら、ですね。