Tkinterでアプリ作成　入門

## 仮想環境作成
### Windows環境
```
python -m venv tkinter
.\tkinter\Scripts\activate
```
### Mac環境
```
python -m venv tkinter
source tkinter/bin/activate
```
## 実装
### tkオブジェクトを表示
```py
import tkinter

root = tkinter.Tk()
root.mainloop()
```
![](https://storage.googleapis.com/zenn-user-upload/4bfe8770be3d-20220218.png)

### タイトル名とサイズを決めてみましょう
```py
import tkinter

root = tkinter.Tk()
root.title('Sample')
root.geometry('1200x600')
root.mainloop()
```
![](https://storage.googleapis.com/zenn-user-upload/ad2b0b128175-20220218.png)

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

```py
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関数を作成します。
```py
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モジュールを利用するため
追加でインポートします。
```py
import tkinter.ttk as ttk
```

選択肢はリストで作成した値をもとに表示します。
```py
    def set_widgets(self, root):
        select_list = ['SelectA', 'SelectB']
        combobox = ttk.Combobox(root, values=select_list)
	combobox.pack()
```
![](https://storage.googleapis.com/zenn-user-upload/7a4e24d8b793-20220219.png)

ただ、このままだと選択した値を取得できないため、
ボタンを作成し、クリックしたときにターミナルに選択情報を出力できるようにしましょう。
```py
    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()
```

![](https://storage.googleapis.com/zenn-user-upload/12b07ebe92a8-20220219.png)
![](https://storage.googleapis.com/zenn-user-upload/2a011fd19353-20220219.png)

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

## ラジオボタン設置
ラジオボタン用にradio_Button関数を作成します。
```py
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
```
選択肢はリストで作成した値をもとに表示します。
```py
    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))
```

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

```py
    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)) 
```
![](https://storage.googleapis.com/zenn-user-upload/fd7bb0b0e483-20220302.png)

## 動画
<iframe width="560" height="315" src="https://www.youtube.com/embed/-hdrHlHpaoA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>