# -*- coding: utf-8 -*-
"""
様々な部品（ウィジェット）の配置
"""
# 加点なし
# メニューの「ファイル」，ボタン，ラベル，テキストボックス
# 以外のそれぞれに tk.Variable を設定する必要がある
# 詳しくは，講義スライドをよく読んで埋めること

import tkinter as tk
import tkinter.scrolledtext as st


def main():
    base = tk.Tk()
    base.title("$u_id")

    # メニューバー
    mBar  = tk.Menu(base)

    # ファイル
    mFile = tk.Menu(mBar, tearoff=False)
    mFile.add_command(label="開く")
    mFile.add_command(label="保存")
    mFile.add_separator()
    mFile.add_command(label="終了")

    # 表示
    mDisp = tk.Menu(mBar, tearoff=False)
    mDisp.add_radiobutton(label="大きい")
    mDisp.add_radiobutton(label="標準")
    mDisp.add_radiobutton(label="小さい")

    # メニューの構成
    mBar.add_cascade(label="ファイル", menu=mFile)
    mBar.add_cascade(label="表示",     menu=mDisp)
    base.config(menu=mBar)

    # 左側のフレーム
    frame1 = tk.Frame(base)

    # チェックボタン
    ckBt1 = tk.Checkbutton(frame1, text="チェックボタン１")
    ckBt2 = tk.Checkbutton(frame1, text="チェックボタン２")

    # ラジオボタン
    rdBt1 = tk.Radiobutton(frame1, text="ラジオボタン１")
    rdBt2 = tk.Radiobutton(frame1, text="ラジオボタン２")
    rdBt3 = tk.Radiobutton(frame1, text="ラジオボタン３")

    # スケール，文字入力欄，ボタン
    scale = tk.Scale(frame1, from_=0.0, to=10.0, resolution=0., orient=tk.HORIZONTAL)
    entry = tk.Entry(frame1)
    bt    = tk.Button(frame1, text="ボタン")

    # 右側のフレーム
    frame2 = tk.Frame(base)
    label  = tk.Label(frame2, text="これはラベル、下はテキストボックス")
    txBox  = st.ScrolledText(frame2, width=25, height=15)

    # それぞれ配置（都度でもよい）
    ckBt1.pack()
    ckBt2.pack()
    rdBt1.pack()
    rdBt2.pack()
    rdBt3.pack()
    scale.pack()
    entry.pack()
    bt.pack()
    frame1.pack(side=tk.LEFT)
    label.pack()
    txBox.pack()
    frame2.pack(side=tk.RIGHT, fill=tk.BOTH)

    base.mainloop()  # GUIを待機


if __name__ == "__main__":
    main()
