From 0e160ee24b86e5cac7fe6ba431377c995bc82e41 Mon Sep 17 00:00:00 2001 From: billy Date: Mon, 16 Oct 2023 18:12:15 +0800 Subject: [PATCH] feat: Add 12/24 hour option for statusbar clock --- biscuit/core/layout/statusbar/__init__.py | 8 +++++--- biscuit/core/layout/statusbar/utils/clock.py | 9 +++++++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/biscuit/core/layout/statusbar/__init__.py b/biscuit/core/layout/statusbar/__init__.py index d29b309d..044dca2d 100644 --- a/biscuit/core/layout/statusbar/__init__.py +++ b/biscuit/core/layout/statusbar/__init__.py @@ -106,12 +106,14 @@ def __init__(self, master: Root, *args, **kwargs) -> None: self.notif.pack(side=tk.RIGHT, padx=(0, 10)) # clock + self.clock = SClock(self, text="H:M:S", description="Time") self.time_actionset = ActionSet( "Configure clock format", "time:", - [("12 hours", lambda e=None: print("time 12 hours", e)), - ("24 hours", lambda e=None: print("time 24 hours", e)),], + [("12 hours", lambda e=None: self.clock.use_24_hour_format(False)), + ("24 hours", lambda e=None: self.clock.use_24_hour_format(True)),], ) - self.clock = SClock(self, text="H:M:S", function=lambda: self.base.palette.show_prompt('time:'), description="Time") + self.base.palette.register_actionset(lambda: self.time_actionset) + self.clock.change_function(function=lambda: self.base.palette.show_prompt('time:')) self.clock.set_pack_data(side=tk.RIGHT) self.clock.show() diff --git a/biscuit/core/layout/statusbar/utils/clock.py b/biscuit/core/layout/statusbar/utils/clock.py index f4420e05..2a92a42d 100644 --- a/biscuit/core/layout/statusbar/utils/clock.py +++ b/biscuit/core/layout/statusbar/utils/clock.py @@ -3,13 +3,18 @@ from .button import SButton -#TODO 12/24 actionset config class SClock(SButton): def __init__(self, *args, **kwargs) -> None: super().__init__(*args, **kwargs) + self.hour_24_format = True self.update() def update(self) -> None: - time_live = time.strftime("%I:%M %p") + time_live = time.strftime("%H:%M:%S" if self.hour_24_format else "%I:%M:%S") self.text_label.config(text=time_live) self.after(200, self.update) + + def use_24_hour_format(self, flag: str) -> None: + "Use 24 hour format for clock" + self.hour_24_format = flag + self.update()