Skip to content

Instantly share code, notes, and snippets.

@DBoyara
Created July 4, 2022 15:00
Show Gist options
  • Select an option

  • Save DBoyara/5a1a47e1cdfe11beca3e4976f03de4ce to your computer and use it in GitHub Desktop.

Select an option

Save DBoyara/5a1a47e1cdfe11beca3e4976f03de4ce to your computer and use it in GitHub Desktop.
Simple console alarm with schedule and tkinter
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