機械系エンジニアの備忘録

20代独身社会人。仕事では機械・機構の研究開発を行っているエンジニアが、自分の専門分野ではないpythonを扱って楽しむブログです。

MENU

【Python+Tkinter】【初心者】リストボックスにスクロールバーを付けよう

pythonTkinterでスクロールバーを使う方法

2020/01/26追記:プログラミング初心者に向けたpythonの勉強法と手順を記事にしました。

stjun.hatenablog.com

■はじめに

前回、リストボックスの作り方・使い方を紹介しました。

stjun.hatenablog.com

左の画面が初期画面で右の画面がスクロールした後の画面になりますが、スクロールバーがないので非常に分かりづらいですね。

f:id:stjun:20190714213352p:plain   f:id:stjun:20190714213415p:plain

 そこで今回はスクロールバーを設定する方法を紹介します。

■コード

忙しい方やpythonのコードを自力で読んで理解できる方向けに、先にコードを載せます。動作環境はAnaconda(python3.7)です。

#スクロールバーとリストボックスの使い方
import tkinter as tk

#ウインド画面の作成
root=tk.Tk()
root.title("スクロールバーの使い方")

#フレームの作成
#フレーム1(上側:リストボックスを格納する)
frame=tk.Frame()
frame.grid(row=0,sticky="we")
#フレーム2(下側:ボタンを格納する)
frame_button=tk.Frame()
frame_button.grid(row=1,sticky="we")

#スクロールバーの作成
scroll=tk.Scrollbar(frame)

#スクロールバーの配置を決める
scroll.pack(side=tk.RIGHT,fill="y")

#データ
list_value=tk.StringVar()
list_value.set(["Aさん","Bさん","Cさん","Dさん","Eさん","Fさん","Gさん","Hさん","Iさん","Jさん","Kさん","Lさん"])

#リストボックスの作成
listbox=tk.Listbox(frame,height=8,listvariable=list_value,selectmode="single",yscrollcommand=scroll.set)
listbox.pack()

#部品の動きをスクロールバーに反映させる
scroll["command"]=listbox.yview


#テキストの作成
text_str=tk.StringVar()
text_str.set("ボタンを押して下さい")
text=tk.Label(frame_button,textvariable=text_str)
text.grid(row=0,columnspan=3)

#ボタンを押したら選択している人を表示する
def check():
    text_check=listbox.curselection()
    text_str.set(listbox.get(text_check))

#全選択する
def all_select():
    listbox.select_set(0,tk.END)

#全クリアする
def all_clear():
    listbox.select_clear(0,tk.END)
    
#ボタンの作成
Button=tk.Button(frame_button,text="判定",command=check)
Button.grid(row=1,column=0)

Button_allselect=tk.Button(frame_button,text="全選択",command=all_select)
Button_allselect.grid(row=1,column=1)

Button_allclear=tk.Button(frame_button,text="全クリア",command= all_clear)
Button_allclear.grid(row=1,column=2)


#画面の表示
root.mainloop()   

このコードを実行すると以下のようにスクロールバーが右側に表示されます。

スクロールするとバーが動くので非常に分かりやすいですね。

 

f:id:stjun:20190715222337p:plain   f:id:stjun:20190715222544p:plain

 

 

■説明

スクロールバーの作り方

まず次のようにスクロールバーを作ります。カッコ内はどこに作るかを指定しています。今回は上部(リストボックスのあるフレーム内)に作りたかったのでframeとしています。

#スクロールバーの作成
scroll=tk.Scrollbar(frame)

 

次に、スクロールバーの位置を決めます。今回は右側に上下一杯に作りたかったので次のようにside=tk.RIGHT,fill="y"と書いています。

#スクロールバーの配置を決める
scroll.pack(side=tk.RIGHT,fill="y")

 

次にリストボックスのカッコ内にyscrollcommand=scroll.setを追加してあげます。これでリストボックスを動かすとスクロールバーが動くようになります。ただ気を付けて欲しいのはこのままでは、リストボックスを動かすとスクロールバーが動くけど、スクロールバーを動かしてもリストボックスは動かないということです。

#リストボックスの作成
#selectmodeの種類(single:1つだけ選択できる、multiple:複数選択できる、extended:複数選択可能+ドラッグでも選択可能)
listbox=tk.Listbox(frame,height=8,listvariable=list_value,selectmode="single",yscrollcommand=scroll.set)
listbox.pack()

 

そこでスクロールバーを動かしたらリストボックスも動くように設定する必要があります。それが次になります。

#部品の動きをスクロールバーに反映させる
scroll["command"]=listbox.yview

これで両者の動きがリンクするようになりました。

これで終了になります、私はscroll["command"]=listbox.yviewを忘れてしまうことが多いので皆さんも気を付けてください。

 

■自分が使ってるお得情報の紹介

私はAmazon kindle unlimitedというサービスを1年以上利用しています。

これは月額980円で 和書12万冊以上の電子書籍を読めるサービスです。

ビジネス本、雑誌、漫画、技術本など様々な本を読むことができます。10冊まで端末にダウンロードできるのでネット環境がなくても(オフラインでも)見れます。

なおkindle unlimitedは最初の30日間無料のため、気軽に登録してみて、あまり読みたい本が無ければすぐに解約しても問題ありません。

それか30日内に気になる本を全て読破すれば実質タダです。

ぜひ気になった方はチェックしてみて下さい。

なおkindleにない本等を買う時はamazonギフト券(amazonで使えるポイント)を買い、ポイントで数冊まとめて買った方がお得です。

ギフト券(ポイント)は買ったら10年も有効で、ポイントが付きます。さらに本をまとめ買い(2冊以上同時に)買うと、ポイントがもらえます。

https://www.amazon.co.jp/b?ie=UTF8&node=5431437051

学生さんであればkindle unlimitedよりも年2450円(月210円程度)で映画見放題、音楽聞き放題、本読み放題の「prime student」がおすすめです。

以下に私がkindle unlimitedで読んだ本を載せておきます。

さおだけ屋はなぜ潰れないのか? 身近な疑問からはじめる会計学 (光文社新書)

さおだけ屋はなぜ潰れないのか? 身近な疑問からはじめる会計学 (光文社新書)

  • 作者:山田 真哉
  • 出版社/メーカー: 光文社
  • 発売日: 2005/02/16
  • メディア: 新書
 
多動力 (NewsPicks Book) (幻冬舎文庫)

多動力 (NewsPicks Book) (幻冬舎文庫)

 

 

■雑誌系

 

MONOQLO (モノクロ) 2020年 02月号 [雑誌]

MONOQLO (モノクロ) 2020年 02月号 [雑誌]

 
家電批評 2020年 1月号 [雑誌]

家電批評 2020年 1月号 [雑誌]

  • 作者: 
  • 出版社/メーカー: 晋遊舎
  • 発売日: 2019/12/03
  • メディア: Kindle
 
ロードバイク完全メンテナンス (エイムック 3544 BiCYCLE CLUB別冊)

ロードバイク完全メンテナンス (エイムック 3544 BiCYCLE CLUB別冊)

  • 作者: 
  • 出版社/メーカー: エイ出版社
  • 発売日: 2016/11/29
  • メディア: ムック
 
繰り返し作りたくなる!  ラク弁当レシピ (エイムック 3680)

繰り返し作りたくなる! ラク弁当レシピ (エイムック 3680)

 
Tarzan(ターザン) 2020年1月23日号 No.779 [内臓脂肪 皮下脂肪すっきり落とす!] [雑誌]

Tarzan(ターザン) 2020年1月23日号 No.779 [内臓脂肪 皮下脂肪すっきり落とす!] [雑誌]

  • 作者: 
  • 出版社/メーカー: マガジンハウス
  • 発売日: 2020/01/04
  • メディア: Kindle
 
DIME(ダイム) 2020年 03 月号 [雑誌]

DIME(ダイム) 2020年 03 月号 [雑誌]

  • 作者: 
  • 出版社/メーカー: 小学館
  • 発売日: 2019/12/16
  • メディア: 雑誌
 

 

■最後に

今回はスクロールバーを紹介しました。スクロールバーはテキストなどにも使えます。個人的にはリストボックスもテキストもあまり使わないのでスクロールバーを使う機会は少ないですが、便利な機能ではあるのでいざという時はぜひ参考にしてみて下さい。