Created
July 4, 2022 15:00
-
-
Save DBoyara/5a1a47e1cdfe11beca3e4976f03de4ce to your computer and use it in GitHub Desktop.
Simple console alarm with schedule and tkinter
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import tkinter as tk | |
| import time | |
| from argparse import ArgumentParser | |
| from logging import getLogger | |
| from tkinter import messagebox | |
| import schedule | |
| logger = getLogger(__name__) | |
| def _init_parser() -> ArgumentParser: | |
| parser = ArgumentParser() | |
| parser.add_argument("hour", help="An hour for an alarm clock", type=int) | |
| parser.add_argument("minute", help="An minute for an alarm clock", type=int) | |
| return parser | |
| def _init_messagebox(hour: int, minute: int): | |
| root = tk.Tk() | |
| root.withdraw() | |
| messagebox.showwarning("Alarm Clock!", f"Ding Dong! Time is {hour}:{minute}") | |
| return schedule.CancelJob | |
| def main(): | |
| parser = _init_parser() | |
| args = parser.parse_args() | |
| if not 0 <= args.hour <= 24: | |
| return logger.error("Hour must be between 0 and 24 value") | |
| if not 0 <= args.minute <= 60: | |
| return logger.error("Minute must be between 0 and 60 value") | |
| (schedule | |
| .every() | |
| .day | |
| .at(f"{args.hour}:{args.minute}") | |
| .do(_init_messagebox, hour=args.hour, minute=args.minute)) | |
| while True: | |
| schedule.run_pending() | |
| time.sleep(1) | |
| if __name__ == '__main__': | |
| main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment