Python Forum
Tkinter messagebox and using datetime/timedelta
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Tkinter messagebox and using datetime/timedelta
#4
Example of using the after method to do something after every second without blocking the GUI event loop.
import tkinter as tk
from tkinter import messagebox
import datetime as dt


class MainFrame(tk.Frame):

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        theLabel = tk.Label(self, text="Enter time below in minutes (e.g 30)")
        theLabel.pack()
        self.entry_1 = tk.Entry(self)
        self.entry_1.pack()
        button_1 = tk.Button(self, text="Set interval",
                             command=self.set_alarm_time)
        button_1.pack()
        self.timenow_label = tk.Label(self)
        self.timenow_label.pack()
        self.alarm_time_label = tk.Label(self, text='Alarm time:')
        self.alarm_time_label.pack()
        self.pack()
        self.alarm_time = None
        self.timer()

    def set_alarm_time(self):
        try:
            interval = dt.timedelta(minutes=int(self.entry_1.get()))
        except ValueError:
            self.entry_1.delete(0, tk.END)
            messagebox.showinfo(
                'Entry error', message="Please enter an integer")
            return

        self.alarm_time = dt.datetime.now() + interval
        self.alarm_time_label['text'] = self.alarm_time.strftime(
            'Alarm time: %H:%M:%S')

    def timer(self):
        timenow = dt.datetime.now()
        self.timenow_label['text'] = timenow.strftime('Time now: %H:%M:%S')
        if self.alarm_time and timenow >= self.alarm_time:
            self.alarm_time = None
            self.alarm_time_label['text'] = 'Alarm time:'
            self.entry_1.delete(0, tk.END)
            messagebox.showinfo(
                'STRETCH TIME', message="Please take a stretch break!")

        self.after(1000, self.timer)


if __name__ == "__main__":
    app = tk.Tk()
    main_frame = MainFrame()
    app.mainloop()
Larz60+ likes this post
Reply


Messages In This Thread
RE: Tkinter messagebox and using datetime/timedelta - by Yoriz - Apr-07-2021, 06:23 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  [Tkinter] Sound from the tkinter.messagebox tedarencn 2 5,944 Jul-11-2020, 10:45 AM
Last Post: steve_shambles
  [Tkinter] Messagebox with playsound khandelwalbhanu 6 4,391 May-16-2020, 11:40 AM
Last Post: chesschaser
  [Tkinter] messagebox is not being executed please help erwinsiuda 2 2,315 Apr-02-2020, 01:56 AM
Last Post: Larz60+
  [Tkinter] passing data to messagebox kmusawi 0 1,813 Feb-18-2019, 01:51 AM
Last Post: kmusawi
  Adding timer on the Messagebox aniyanetworks 6 11,717 Feb-13-2019, 07:48 PM
Last Post: aniyanetworks
  [Tkinter] Button widget gets stuck from using tkinter.messagebox? Nwb 2 3,915 Jun-20-2018, 02:21 PM
Last Post: Nwb

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020