【完全独学Python】TkinterのListbox(リストボックス)はこれだけ覚えて!

デスクトップアプリ

こんにちは!ゆーや(@yuyamanm118712)です。

こちらのページでは完全独学でWebプログラマとなった私が

デスクトップアプリには必須!!TkinterでListbox(リストボックス)を表示する方法をご紹介します!

ゆーや
ゆーや

Tkinterの基本的な使い方は以下の記事を見てね!

Tkinterで「画面にリストボックスを表示する」ためにはListbox(リストボックスというウィジェット(部品)を使います!

Listbox(リストボックスはリストを表示し、ユーザーがリストの中から選択することができるようにします。

この記事を通して、Listbox(リストボックスは使いこなせるようにしておきましょう!

ゆーや
ゆーや

アプリ制作楽しいですよね!

そんなプログラミングに楽しさを覚えたあなた!

ゆーや
ゆーや

勉強し始めて、IT業界に興味があるけど、自信がない。

僕も同じでした。なので、一人でコツコツ、1年間も独学で勉強…
そのあと、一人で転職活動…

心細かったのを覚えています…

ゆーや
ゆーや

しかし、時代は変わり、

プログラミングを学び、転職をサポートしてくれるスクールがあります!

その名も…

【Winスクール】

初心者から経験者まで対応できる300以上の講座ラインナップで、スキルアップを目指す方に最適!プロ講師による丁寧な「個人レッスン」で、あなたに合わせた指導を受けられます。

  • オンライン or 対面で選べる受講スタイル:あなたのライフスタイルに合わせて柔軟に受講可能!
  • 実践重視のカリキュラム:現場経験豊富な講師陣が指導。学んだスキルをそのまま活かせる即戦力を養成。
  • 年間1500社の企業研修実績で、ビジネスシーンに即した指導内容が魅力!

就職・転職サポートも充実し、受講中はもちろん卒業後も安心。まずは無料体験で、その質の高さを体感してください!

まずは無料体験・説明会に参加を♪【Winスクール】

ゆーや
ゆーや

「完全独学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つのみ選択可能。ドラッグで別データを選択可能
SINGLE1つのみ選択可能。
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」を使う

ゆーや
ゆーや

まとめの内容を見て、もう頭に浮かべば完璧!

コメント

タイトルとURLをコピーしました