💭

Tkinterでアプリ作成 入門

2022/02/19に公開

動画

https://www.youtube.com/watch?v=-hdrHlHpaoA

仮想環境作成

Windows環境

python -m venv tkinter
.\tkinter\Scripts\activate

Mac環境

python -m venv tkinter
source tkinter/bin/activate

実装

tkオブジェクトを表示

import tkinter

root = tkinter.Tk()
root.mainloop()

タイトル名とサイズを決めてみましょう

import tkinter

root = tkinter.Tk()
root.title('Sample')
root.geometry('1200x600')
root.mainloop()

classに纏めたものが以下になります。

import tkinter

class Application(tkinter.Frame):
    def __init__(self, root):
        super().__init__(root)
        root.title('Sample')
        root.geometry('1200x600')

def main():
    root = tkinter.Tk()
    app = Application(root)
    root.mainloop()

if __name__ == "__main__":
    main()

ドロップダウンリスト設置

ドロップダウン用にset_widgets関数を作成します。

class Application(tkinter.Frame):
    def __init__(self, root):
        super().__init__(root)
        root.title('Sample')
        root.geometry('1200x600')
        self.set_widgets(root)

    def set_widgets(self, root):
        pass

今回利用するコンボボックスは、ttkモジュールを利用するため
追加でインポートします。

import tkinter.ttk as ttk

選択肢はリストで作成した値をもとに表示します。

    def set_widgets(self, root):
        select_list = ['SelectA', 'SelectB']
        combobox = ttk.Combobox(root, values=select_list)
	combobox.pack()

ただ、このままだと選択した値を取得できないため、
ボタンを作成し、クリックしたときにターミナルに選択情報を出力できるようにしましょう。

    def set_widgets(self, root):
        select_list = ['SelectA', 'SelectB']
        combobox = ttk.Combobox(root, values=select_list)
        combobox['values'] = ['SelectA', 'SelectB']
        combobox.pack()
        button = tkinter.Button(text="表示",command=lambda:print(combobox.get()))
        button.pack()


もしデフォルトでリストの文字列を表示する場合は、cuurrent(index)にすると良いです。
以下は、index0を参照するとき。

combobox.current(0)

ラジオボタン設置

ラジオボタン用にradio_Button関数を作成します。

class Application(tkinter.Frame):
    def __init__(self, root):
        super().__init__(root)
        root.title('Sample')
        root.geometry('1200x600')
        self.set_widgets(root)
	self.radio_Button(root)

    def radio_Button(self, root):
        pass

選択肢はリストで作成した値をもとに表示します。

    def radio_Button(self, root):
        radio_list = ['SelectC','SelectD']
        rdo_var = tkinter.IntVar(value = 0)
        for i in range(len(radio_list)):
            rdo = tkinter.Radiobutton(root, value=i, variable=rdo_var, text=radio_list[i])
            rdo.place(x=530, y=40 + (i * 24))

ただ、このままだと選択した値を取得できないため、
ボタンを作成し、クリックしたときにターミナルに選択情報を出力できるようにしましょう。

    def radio_Button(self, root):
        radio_list = ['SelectC','SelectD']
        rdo_var = tkinter.IntVar(value = 0)
        for i in range(len(radio_list)):
            rdo = tkinter.Radiobutton(root, value=i, variable=rdo_var, text=radio_list[i])
            rdo.place(x=530, y=40 + (i * 24))
        button = tkinter.Button(text="表示",command=lambda:print(radio_list[rdo_var.get()]))
        button.place(x=530, y=40 + ((i+1) * 24)) 

Discussion