ryotankの備考録日記

趣味の電子工作についての備考録などなど

減量管理入力補助GUI_その90_運動タイマーの試作_フレーム編その4

他のボタンの再現と 各コマンドについて考える

#運動タイマー用ボタンフレームその2


#計測スタート、ストップ、リセット、休憩タイム(3分固定)をフレームその2とする

#各コマンドを作成
#ただしリセットに関してはタイマー表示が強制的に00:00に変化する
#フレームの線は4pt, 各ボタンの線は5ptに設定
#ボタンの通常形態はオレンジ系統の色
#ボタンを押すと赤色系統の色に変化する


import customtkinter as ctk





class btn_frame_two(ctk.CTkFrame):
    def __init__(self, master, **kwargs):
        super().__init__(master, **kwargs)

        def start_measurement_btn_click_event():
            self.start_measurement_btn.configure(fg_color='#ed1a3d')

        def break_three_minutes_btn_click_event():
            self.break_three_minutes_btn.configure(fg_color='#ed1a3d')

        def reset_btn_click_event():
            self.start_measurement_btn.configure(fg_color='#FF9932')
            self.break_three_minutes_btn.configure(fg_color='#FF9932')
            timer_display_reset_event

        def timer_display_reset_event(event):
            self.timer_display_label.configure(text='00:00', anchor="center", font=('Helvetica', 40) )

        #フレームに追加したいウィジェットを配置していく
        self.start_measurement_btn = ctk.CTkButton(master=self, text="計測スタート", border_width=5, corner_radius=6,
                                anchor="center",  fg_color="#FF9932", width=10,
                                text_color="white", font=('Helvetica', 26),  command=start_measurement_btn_click_event)
        self.start_measurement_btn.grid(row=0, column=0, padx=30, pady=10)
        self.stop_btn = ctk.CTkButton(master=self, text="ストップ", border_width=5, corner_radius=6,
                                    anchor="center",  fg_color="#FF9932", width=10,
                                    text_color="white", font=('Helvetica', 26)  )
        self.stop_btn.grid(row=1, column=0, padx=30, pady=20)
        self.reset_btn = ctk.CTkButton(master=self, text="リセット", border_width=5, corner_radius=6,
                                    anchor="center", fg_color="#FF9932" , width=10,
                                    text_color="white", font=('Helvetica', 26), command=reset_btn_click_event)
        self.reset_btn.grid(row=2, column=0, padx=30, pady=20)
        self.break_three_minutes_btn = ctk.CTkButton(master=self, text="休憩タイム(3分固定)", border_width=5, corner_radius=6,
                                    anchor="center",  fg_color="#FF9932", width=10,
                                text_color="white", font=('Helvetica', 26), command=break_three_minutes_btn_click_event)
        self.break_three_minutes_btn.grid(row=3, column=0, padx=30, pady=20)

        #タイマー表示:時間を表示する部分
        self.timer_display_label = ctk.CTkLabel(master=self, text="50:00", anchor="center",
                                            font=('Helvetica', 40))
        self.timer_display_label.grid(row=2, column=1, padx=40, pady=10)

        self.timer_display_label.bind("<ButtonPress>", command=reset_btn_click_event, add=timer_display_reset_event)





class btn_app(ctk.CTk):
    def __init__(self):
        super().__init__()
        self.geometry("800x400")
        self.title("運動タイマー用ボタンフレームその2_計測スタートやリセット、休憩タイムの再現")

        self.timer_one_frame = btn_frame_two(master=self, 
                    fg_color="white", border_color="blue",
                    border_width=4, width=100,
                    height=50)
        self.timer_one_frame.grid(row=0, column=0, padx=40)

app = btn_app()
app.mainloop()

再現すると このような感じになった

運動タイマーの試作フレーム編その2の再現 ボタンを触る前

運動タイマー用ボタンフレームその2計測スタートのボタン色を赤へ変化させたキャプチャ

スタート、ストップやタイマー表示が 表示出来た。

またリセットボタンを押すとスタート、休憩ボタンの 色が元に戻るようにも出来た

コマンドについては、次回解説を付ける

タイマー表示をリセットするコマンドは だいぶ時間をかけて実現する事になりそう