# -*- coding: utf-8 -*-
"""
様々な部品（ウィジェット）の配置（加点）
"""
# 加点あり

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="終了")

    # 表示
    disp_var = tk.IntVar(value=0)
    mDisp = tk.Menu(mBar, tearoff=False)
    mDisp.add_radiobutton(label="大きい", variable=disp_var, value=1)
    mDisp.add_radiobutton(label="標準",   variable=disp_var, value=0)
    mDisp.add_radiobutton(label="小さい", variable=disp_var, value=-1)

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

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

    # チェックボタン
    ckBt1_var = tk.BooleanVar(value=True)
    ckBt2_var = tk.BooleanVar(value=False)
    ckBt1 = tk.Checkbutton(frame1, text="チェックボタン１", variable=ckBt1_var)
    ckBt2 = tk.Checkbutton(frame1, text="チェックボタン２", variable=ckBt2_var)

    # ラジオボタン
    rdBt_var = tk.IntVar(value=1)
    rdBt1 = tk.Radiobutton(frame1, text="ラジオボタン１", variable=rdBt_var, value=1)
    rdBt2 = tk.Radiobutton(frame1, text="ラジオボタン２", variable=rdBt_var, value=2)
    rdBt3 = tk.Radiobutton(frame1, text="ラジオボタン３", variable=rdBt_var, value=3)

    # スケール，文字入力欄，ボタン
    scale_var = tk.DoubleVar(value=5.0)
    scale = tk.Scale(frame1, from_=0.0, to=10.0, resolution=0.1, variable=scale_var, orient=tk.HORIZONTAL)
    entry_var = tk.StringVar(value="エントリー")
    entry = tk.Entry(frame1, textvariable=entry_var)
    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()
