「Python3」Tkinter Ver.8.6(Listboxの作成と設定方法)

Tkinter Python

Listboxとは?

Listboxは、通常は長い1行のテキスト項目のリストが表示され、そのリストの中から1つまたは複数を選択できるウィジェットになります。

Listboxの実装

<ソースコード>
from tkinter import *
from tkinter import ttk
from tkinter import font

def button_push():
    for i in listbox.curselection():
        print(listbox.get(i))

#メインウィンドウ生成
root = Tk()
#ウィンドウのタイトル
root.title('Application')

#Frame生成
frame = ttk.Frame(
    root,
    padding = (20,10)
)

#Listbox生成
List = ['Sunday','Manday','Tuesday','Wednesday','Thursday','Friday','Saturday']
val = StringVar(value = List)
font = font.Font(
    size = 20,
)
listbox = Listbox(
    frame,
    font = font, #文字スタイル
    activestyle = "underline", #"underline"...下線 / "none"...なし
    borderwidth = 5, #境界線の線の太さ
    width = 8, #横幅
    justify = "right", #文字揃え位置(right, center, left)
    relief = "sunken", #形状
    exportselection = False,
    listvariable = val,  #指定したデータを格納するオブジェクト
    selectmode = 'extended', #browse...単一 / extended...複数
    height = 4, #高さ
    foreground = "#ffffff", #文字色
    background = "#000000", #背景色
    disabledforeground = "blue", #無効時の色を指定
    highlightbackground = "red", #選択していない時の境界線色
    highlightcolor = "green", #選択している時の境界線色
    highlightthickness = 5, #highlight線の太さ
    selectforeground = "#ff1493", #選択時の文字色
    selectbackground = "yellow", #選択時の背景色
    selectborderwidth = 5, #選択時の境界線の太さ
    setgrid = False, #False...ピクセル単位でサイズ変更 / True...グリッド単位でサイズ変更
    state = "normal", #状態
)

#Scrollbar生成
scrollbar_x = ttk.Scrollbar(
    frame,
    orient = "horizontal",
    command = listbox.xview
)
listbox['xscrollcommand'] = scrollbar_x.set
scrollbar_y = ttk.Scrollbar(
    frame,
    orient = "vertical",
    command = listbox.yview
)
listbox['yscrollcommand'] = scrollbar_y.set

#Button生成
button = ttk.Button(
        frame,
        text = 'OK', #表示する文字
        width = str('OK'), #横幅
        padding = (20, 00), #隙間
        command = button_push #押されたら実行する関数
        )

#ウィンドウ内にFrameを表示
frame.grid()
#Frame内にListboxを表示
listbox.grid(row = 0)
#Frame内にScrollbarを表示
scrollbar_x.grid(row = 1, sticky = (W, E))
scrollbar_y.grid(row = 0, column = 1, sticky = (S, N))
#Frame内にButtonを表示
button.grid(row = 2)

#ウィンドウ表示
root.mainloop()
<出力結果>

Listbox 説明01

Listbox 説明02

Manday
Tuesday
Wednesday

Listboxの中から1つまたは複数選択し、選択した状態でButtonを押すことで、コンソールに選択した値を出力するようになっています。
“selectmode”オプションは通常”browse”が指定されており、この状態ではユーザーは一つしか選択することができません。しかし、”extended”を指定することで、複数を選択することができます。
選択しているListboxの値を得るためには、curselectionメソッドを使用します。”listbox.curselection()”は、選択している要素番号を返します。例えば、”Sunday”を選択している場合は”0″、”Manday”を選択している場合は”1″を返します。また、複数選択している場合は要素番号をtuple型で返します。

Listboxオプションを表にまとめます。

オプション 説明
font 文字のスタイル
activestyle “underline”…下線
“none”…なし
activestyle = “underline”
borderwidth 境界線の線の太さ borderwidth = 5
width 横幅 width = 20
justify 文字揃え位置(right, left) justify =”right”
relief 形状 relief = “sunken”
exportselection ウィジェットの選択をウィンドウマネージャの選択とリンクさせるか設定 exportselection = False
listvariable リストボックスのリストを設定
selectmode 選択の設定
browse…単一
extended…複数
selectmode = ‘extended’
height 高さ height = 200
foreground 文字色 foreground = “#ffffff”
background 背景色 background = “#000000”
disabledforeground 無効時の色を指定 disabledforeground = “blue”
highlightbackground 選択していない時の境界線色 highlightbackground = “red”
highlightcolor 選択している時の境界線色 highlightcolor = “green”
highlightthickness highlight線の太さ highlightthickness = 5
selectforeground 選択時の文字色 selectforeground = “#ff1493”
selectbackground 選択時の背景色 selectbackground = “yellow”
selectborderwidthx 選択時の境界線の太さ selectborderwidth = 5
setgrid False…ピクセル単位でサイズ変更
True…グリッド単位でサイズ変更
setgrid = False
state 状態(normal, active, disabled) state = “normal”
xscrollcommand 横スクロールバーの設定 xscrollcommand = scrollbar.set
yscrollcommand 縦スクロールバーの設定 yscrollcommand = scrollbar.set

reliefオプションは、以下の値を指定することができます。

reliefオプション 説明
flat 平坦
raised 出っ張り
sunken 引っ込み
groove
ridge 土手

“state”オプションを表にまとめます。

stateオプション 説明
normal 通常の状態
active マウスカーソルがウィジェットの上にあり、マウスをクリックすることで何らかの動作をさせる
disabled プログラムによってウィジェットを無効化する
focus ウィジェットにキーボードフォーカスをする
pressed ウィジェットは押されている
selected チェックボタンやラジオボタンのようなウィジェットでの “オン” や “チェック有” や “選択中” に当たる
background Windows と Mac には “アクティブな” もしくは最前面のウィンドウという概念がある
背面のウィンドウにあるウィジェットには background 状態が設定され、最前面のウィンドウにあるウィジェットでは解除される
readonly ウィジェットはユーザからの変更を受け付けない
alternate ウィジェット特有の切り替え表示
invalid ウィジェットの値が不正

“selectmode”オプションを表にまとめます。

selectmodeオプション 説明
browse デフォルトの設定
リストから1つしか選択できない
マウスの位置につれて選択される行も移動
single マウスの左ボタンを押したアイテムが選択
multiple 複数の行を選択可能
マウス左ボタンをクリックすると反転
extended 複数の行を選択可能
マウスのドラッグ、Shift+左ボタン、Ctrl+左ボタンが使用可能
複数選択できる時の通常の形式

コメント

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