# -*- coding: utf-8 -*-
"""
イベントハンドラの登録（bind, lambda, ラベル）
"""

import tkinter as tk


# マウスの出入りでラベルの文字を変更
# 今回はeventを利用せず，bind時の引数（mouse_in）で出入りを判定
def emergency(event:tk.Event, lb1:tk.Label, mouse_in:bool):
    """ 指示１ここから """
    # このコメントブロックの下に，
    # マウスがラベルに入ったら，ラベルの文字列を"異常事態発生！"に
    # マウスがラベルから出たら，ラベルの文字列を"特に問題なし"に
    # 再設定するような命令文を書きなさい．

    if mouse_in:
        lb1.config(text="異常事態発生！")
    else:
        lb1.config(text="特に問題なし")
    """ 指示１ここまで """


# ラベルの背景色の明るさをクリックで変更
# 今回はeventを利用せず，bind時の引数（sign）で加減を判定
def light(event:tk.Event, lb2:tk.Label, sign:int):
    # ラベルの背景色（RGB各16進数2桁）を取り出して整数化
    bg_rgb2 = int(lb2.cget("bg")[1:], base=16)
    # RGBそれぞれに16進数でf（10進数で15）を加減算
    bg_rgb2 += sign * 0x0f0f0f
    # 上限，下限
    if bg_rgb2 > 0xffffff:
        bg_rgb2 = 0xffffff
    if bg_rgb2 < 0x000000:
        bg_rgb2 = 0x000000
    # 16進数の文字列に戻して背景色に設定
    lb2.config(bg=f"#{bg_rgb2:06x}")


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

    # フォントが大きめのラベル
    lb1 = tk.Label(base, text="特に問題なし", font=16)
    lb2 = tk.Label(base, text="見つかった！", font=16, bg="#000000")

    # lb1にマウスが入ったらTrue，出たらFalse
    lb1.bind("<Enter>", lambda event:emergency(event, lb1, True))
    lb1.bind("<Leave>", lambda event:emergency(event, lb1, False))

    """ 指示２ここから """
    # このコメントブロックの下に，
    # lb2上でマウスが左クリックされたら背景色が一段階明るく
    # 右クリックされたら背景色が一段階暗くなるように
    # lb2にイベントハンドラlight()を紐づけする命令文を書きなさい．

    lb2.bind("<Button-1>", lambda event:light(event, lb2, 1))
    lb2.bind("<Button-3>", lambda event:light(event, lb2, -1))
    """ 指示２ここまで """

    # 配置
    lb1.pack(fill="x")
    lb2.pack(side=tk.BOTTOM, fill="x")

    base.mainloop()  # GUIを待機


if __name__ == "__main__":
    main()
