tkinter

Python tkinter 008

レイアウトの使用(配置)

前回の続きです。
今回はtkinterのレイアウトに関して見ていきます。

任意の位置にパーツを配置する

前回まではpack()でパーツを自動配置していましたが、place(x= , y= )では任意の座標位置に出力する事ができます。
tkinter画面左上が(x=0,y=0)です。

フレームの追加

フレームを使用する事で画面を分割する事ができるようになります。
フレームの作成方法は配置する親画面を指定して”tkinter.Frame(‘親画面’)”で作成できます。
配置の際にpack(fill=”x”)を使用すると対象のフレームでpack()による自動配置が横方向になります。
pack(fill=”y”)で縦方向になります。
また、フレーム内の部品を配置する際にpack(seide=”left”)のようにsideを指定する事で左詰めにしたり右詰めにする事ができます。

import tkinter as tk


def btn_click2():
    textbox.delete(0, tk.END) #クリア
    index = listbox1.curselection()[0] #選択中項目の取得
    textbox.insert(tk.END, listbox1.get(index))


def btn_click3():
    textbox.delete(0, tk.END) #クリア
    textbox.insert(tk.END, listbox_m.curselection())#選択項目全取得(インデックス)

def btn_click4():
    textbox.delete(0, tk.END) #クリア
    textbox.insert(tk.END, val.get())


root = tk.Tk()
root.geometry("500x300")

#####フレーム作成#####
btn_frame =tk.Frame(root,bd=2,relief="ridge")
btn_frame.pack(fill="x")
#btn_frameに配置
btn2 = tk.Button(btn_frame,text='選択項目の取得',command=btn_click2)
btn2.pack(side="left") #左詰めで配置
btn3 = tk.Button(btn_frame,text='選択項目の取得(複数)',command=btn_click3)
btn3.pack(side="left")
btn4 = tk.Button(btn_frame,text='選択項目の取得(ラジオボタン)',command=btn_click4)
btn4.pack(side="left")

#rootに配置
textbox = tk.Entry(root,width=20)
textbox.place(x=10, y=40) #配置

#####リストボックス#####
var = tk.StringVar(value=('test','test2','test3','test4'))
listbox1 = tk.Listbox(root,listvariable=var)
listbox1.place(x=10, y=100)


listbox_m = tk.Listbox(listvariable=var,selectmode="multiple")
listbox_m.place(x=210, y=100)

val =tk.IntVar()
val.set(1)

radio1 = tk.Radiobutton(text="radio1",variable = val,value=0)
radio1.pack()
radio2 = tk.Radiobutton(text="radio2",variable = val,value=1)
radio2.pack()



root.mainloop()