こんにちは!ゆーや(@yuyamanm118712)です。
こちらのページでは完全独学でWebプログラマとなった私が
デスクトップアプリには必須!!TkinterでListbox(リストボックス)を表示する方法をご紹介します!
Tkinterの基本的な使い方は以下の記事を見てね!
Tkinterで「画面にリストボックスを表示する」ためにはListbox(リストボックス)というウィジェット(部品)を使います!
Listbox(リストボックス)はリストを表示し、ユーザーがリストの中から選択することができるようにします。
この記事を通して、Listbox(リストボックス)は使いこなせるようにしておきましょう!
アプリ制作楽しいですよね!
そんなプログラミングに楽しさを覚えたあなた!
勉強し始めて、IT業界に興味があるけど、自信がない。
僕も同じでした。なので、一人でコツコツ、1年間も独学で勉強…
そのあと、一人で転職活動…
心細かったのを覚えています…
しかし、時代は変わり、
プログラミングを学び、転職をサポートしてくれるスクールがあります!
その名も…
初心者から経験者まで対応できる300以上の講座ラインナップで、スキルアップを目指す方に最適!プロ講師による丁寧な「個人レッスン」で、あなたに合わせた指導を受けられます。
- オンライン or 対面で選べる受講スタイル:あなたのライフスタイルに合わせて柔軟に受講可能!
- 実践重視のカリキュラム:現場経験豊富な講師陣が指導。学んだスキルをそのまま活かせる即戦力を養成。
- 年間1500社の企業研修実績で、ビジネスシーンに即した指導内容が魅力!
就職・転職サポートも充実し、受講中はもちろん卒業後も安心。まずは無料体験で、その質の高さを体感してください!
「完全独学Python」で学習しているあなたなら大丈夫!
僕みたいにリモートワークで自由な生活を手に入れよう!
まずは無料体験・カウンセリングを受けてみよう!
もちろん、Pythonコースもあるよ!
この記事を読むと
- Tkinterで作成した画面内にリストボックス(Listbox)が作成できる!
- Tkinterで表示したリストボックス(Listbox)から値を取得することができる
- Tkinterで表示したリストボックス(Listbox)のデザインを変えることができる!
Listbox(リストボックス)の基本
Listbox(リストボックス)作成のサンプルコード
import tkinter as tk
# ウィンドウの作成
root = tk.Tk()
root.title("Listbox-完全独学Python")
root.geometry("500x300")
# リストボックスの中身
colors = ["red", "blue", "green"]
var_listbox = tk.StringVar(value=colors)
# リストボックスの作成
listbox = tk.Listbox(root, listvariable=var_listbox)
# リストボックスの配置
listbox.pack()
# ウィンドウの表示
root.mainloop()
Listbox(リストボックス)の作成のサンプルコードだよ!
リストの中身は、①配列,②StringVarを使って、listvariableに渡してあげることで
設定できる!
Listboxから何個の選択肢を選択可能にするか(selectmode)
selectmodeが取りうる値の一覧
selectmode | 概要 |
BROWSE | (デフォルト)1つのみ選択可能。ドラッグで別データを選択可能 |
SINGLE | 1つのみ選択可能。 |
MULTIPLE | 複数を選択可能。 |
EXTENDED | 複数を選択可能。Shift+クリックでその範囲の選択肢を一気に選択可能。 |
それぞれのサンプルコードを載せておくよ!
実際に動かしてみてね!
tk.BROWSE
import tkinter as tk
def get_selected_value():
def get_selected_value():
# 選択した選択肢のインデックスを取得
selected_index = listbox.curselection()
# 選択した値を表示するラベル
label = tk.Label(root, text=listbox.get(selected_index))
label.pack()
# ウィンドウの作成
root = tk.Tk()
root.title("Listbox-完全独学Python")
root.geometry("500x300")
# リストボックスの中身
colors = ["red", "blue", "green"]
var_listbox = tk.StringVar(value=colors)
# リストボックスの作成
listbox = tk.Listbox(root, listvariable=var_listbox, selectmode=tk.BROWSE)
# リストボックスの配置
listbox.pack()
# ボタンの作成
button = tk.Button(root, text="リストから取得", command=get_selected_value)
button.pack()
# ウィンドウの表示
root.mainloop()
tk.BROWSEで指定できるよ!
でもいつ使うのかはナゾ…
tk.SINGLE
import tkinter as tk
def get_selected_value():
def get_selected_value():
# 選択した選択肢のインデックスを取得
selected_index = listbox.curselection()
# 選択した値を表示するラベル
label = tk.Label(root, text=listbox.get(selected_index))
label.pack()
# ウィンドウの作成
root = tk.Tk()
root.title("Listbox-完全独学Python")
root.geometry("500x300")
# リストボックスの中身
colors = ["red", "blue", "green"]
var_listbox = tk.StringVar(value=colors)
# リストボックスの作成
listbox = tk.Listbox(root, listvariable=var_listbox, selectmode=tk.SINGLE)
# リストボックスの配置
listbox.pack()
# ボタンの作成
button = tk.Button(root, text="リストから取得", command=get_selected_value)
button.pack()
# ウィンドウの表示
root.mainloop()
tk.MULTIPLE
import tkinter as tk
def get_selected_value():
# 選択した選択肢のインデックスを取得
selected_index = listbox.curselection()
# 選択した値を表示するラベル
for v in selected_index:
label = tk.Label(root, text=listbox.get(v))
label.pack()
# ウィンドウの作成
root = tk.Tk()
root.title("Listbox-完全独学Python")
root.geometry("500x300")
# リストボックスの中身
colors = ["red", "blue", "green"]
var_listbox = tk.StringVar(value=colors)
# リストボックスの作成
listbox = tk.Listbox(root, listvariable=var_listbox, selectmode=tk.MULTIPLE)
# リストボックスの配置
listbox.pack()
# ボタンの作成
button = tk.Button(root, text="リストから取得", command=get_selected_value)
button.pack()
# ウィンドウの表示
root.mainloop()
tk.EXTENDED
import tkinter as tk
def get_selected_value():
# 選択した選択肢のインデックスを取得
selected_index = listbox.curselection()
# 選択した値を表示するラベル
for v in selected_index:
label = tk.Label(root, text=listbox.get(v))
label.pack()
# ウィンドウの作成
root = tk.Tk()
root.title("Listbox-完全独学Python")
root.geometry("500x300")
# リストボックスの中身
colors = ["red", "blue", "green"]
var_listbox = tk.StringVar(value=colors)
# リストボックスの作成
listbox = tk.Listbox(root, listvariable=var_listbox, selectmode=tk.EXTENDED)
# リストボックスの配置
listbox.pack()
# ボタンの作成
button = tk.Button(root, text="リストから取得", command=get_selected_value)
button.pack()
# ウィンドウの表示
root.mainloop()
Listboxから値を取得する方法
1つのみ選択可能な場合
import tkinter as tk
def get_selected_value():
# 選択した選択肢のインデックスを取得
selected_index = listbox.curselection()
# 選択した値を表示するラベル
label = tk.Label(root, text=listbox.get(selected_index))
label.pack()
# ウィンドウの作成
root = tk.Tk()
root.title("Listbox-完全独学Python")
root.geometry("500x300")
# リストボックスの中身
colors = ["red", "blue", "green"]
var_listbox = tk.StringVar(value=colors)
# リストボックスの作成
listbox = tk.Listbox(root, listvariable=var_listbox)
# リストボックスの配置
listbox.pack()
# ボタンの作成
button = tk.Button(root, text="リストから取得", command=get_selected_value)
button.pack()
# ウィンドウの表示
root.mainloop()
ボタン押下前
「red」を選択
→ボタン押下後
listbox.curselection()で選択した値のインデックスを取得、
取得したインデックスをを使って、listbox.get(インデックス)とすれば、
選択した値が取得できるよ!
複数選択可能な場合
import tkinter as tk
def get_selected_value():
# 選択した選択肢のインデックスを取得
selected_index = listbox.curselection()
# 選択した値を表示するラベル
for v in selected_index:
label = tk.Label(root, text=listbox.get(v))
label.pack()
# ウィンドウの作成
root = tk.Tk()
root.title("Listbox-完全独学Python")
root.geometry("500x300")
# リストボックスの中身
colors = ["red", "blue", "green"]
var_listbox = tk.StringVar(value=colors)
# リストボックスの作成
listbox = tk.Listbox(root, listvariable=var_listbox, selectmode=tk.MULTIPLE)
# リストボックスの配置
listbox.pack()
# ボタンの作成
button = tk.Button(root, text="リストから取得", command=get_selected_value)
button.pack()
# ウィンドウの表示
root.mainloop()
ボタン押下前
「red」「green」を選択→ボタン押下後
複数選択の場合は、選択肢のインデックスが配列で来るので、
配列のように扱おう!(今回はfor文で回してみた!)
選択肢の編集
Listboxに選択肢を追加(insert)
import tkinter as tk
def get_selected_value():
# 選択した選択肢のインデックスを取得
selected_index = listbox.curselection()
# 選択した値を表示するラベル
for v in selected_index:
label = tk.Label(root, text=listbox.get(v))
label.pack()
# ウィンドウの作成
root = tk.Tk()
root.title("Listbox-完全独学Python")
root.geometry("500x300")
# リストボックスの中身
colors = ["red", "blue", "green"]
var_listbox = tk.StringVar(value=colors)
# リストボックスの作成
listbox = tk.Listbox(root, listvariable=var_listbox, selectmode=tk.SINGLE)
# 選択肢の追加
listbox.insert(tk.END, "black")
# リストボックスの配置
listbox.pack()
# ボタンの作成
button = tk.Button(root, text="リストから取得", command=get_selected_value)
button.pack()
# ウィンドウの表示
root.mainloop()
Listboxに選択肢を追加するにはinsert(追加位置、追加する値)でできるよ!
追加位置には数値でもいいし、tk.ENDでリストの最後に追加してくれる!
選択肢の削除(delete)
import tkinter as tk
def get_selected_value():
# 選択した選択肢のインデックスを取得
selected_index = listbox.curselection()
# 選択した値を表示するラベル
for v in selected_index:
label = tk.Label(root, text=listbox.get(v))
label.pack()
# ウィンドウの作成
root = tk.Tk()
root.title("Listbox-完全独学Python")
root.geometry("500x300")
# リストボックスの中身
colors = ["red", "blue", "green"]
var_listbox = tk.StringVar(value=colors)
# リストボックスの作成
listbox = tk.Listbox(root, listvariable=var_listbox, selectmode=tk.SINGLE)
# 選択肢の追加
listbox.insert(tk.END, "black")
# 選択肢の削除
listbox.delete(1)
# リストボックスの配置
listbox.pack()
# ボタンの作成
button = tk.Button(root, text="リストから取得", command=get_selected_value)
button.pack()
# ウィンドウの表示
root.mainloop()
選択肢を削除する時はdelete(削除したい値の位置)で削除できるよ!
複数の選択肢を削除する時はdelete(1, 3)のように開始位置と終了位置を設定することもできるよ!
まとめ
本記事では、Listbox(リストボックス)を使って、Tkinterで選択肢を表示する方法を紹介しました!
ポイントは以下の7つです!
① Tkinterで画面に選択肢を表示するには「Listbox(リストボックス)」を使う
② 選択可能数を設定するには「selectmode」を使う
③ 1つのみ選択可能な場合の値の取得方法
④ 複数選択可能な場合の値の取得方法
⑤ 途中で選択肢を追加するには「insert」を使う
⑥ 途中で選択肢を削除するには「delete」を使う
まとめの内容を見て、もう頭に浮かべば完璧!
コメント