[Tutor] Clock in tkinter?
Mic
o0MB0o at hotmail.se
Wed Nov 16 17:59:12 CET 2011
Thanks for your quick answer. Hmm, I never thought that didn’t have to use a global variable.
When you mentioned time.localtime() method, did you mean that I should convert the time to numbers and then write an if statement?
Like, say that I make 1 hour equivalent to the integear clock= 1. Then I write an if statement that says that the computer should print “Hi”
if clock>1:
print (“hi”)
Did I understand that correctly?
Thanks for your answers!
Mic
From: Wayne Werner
Sent: Wednesday, November 16, 2011 5:17 PM
To: Mic
Cc: tutor at python.org
Subject: Re: [Tutor] Clock in tkinter?
On Wed, Nov 16, 2011 at 9:28 AM, Mic <o0MB0o at hotmail.se> wrote:
Hi!
It is no homework, in fact am I working ahead of class. I have now, after five minutes thinking, solved my problem, but a new problem has risen.
But to begin with, here is how I solved the problem:
from tkinter import*
import time
the_time=''
class Window(Frame):
def __init__(self,master):
super(Window,self).__init__(master)
self.grid()
self.create_widgets()
def create_widgets(self):
#Create a hello button:
hej=self.hellobttn=Button(self,text="Hey")
self.hellobttn.grid(row=0, column=0)
#Create a label that displays time:
self.display_time=Label(self, text=the_time)
self.display_time.grid(row=0, column=1)
def change_value_the_time():
global the_time
newtime = time.strftime('%H:%M:%S')
if newtime != the_time:
the_time= newtime
self.display_time.config(text=the_time, font="40")
self.display_time.after(20, change_value_the_time)
If you're going to put a function inside your class (since you're using self in there, I'm sure that's what you meant to do), you should change it to:
def change_value_the_time(self):
and call it with
self.display_time.after(20, self.change_value_the_time)
But your program also has unnecessary code. First, since you have a class then instead of using a global, you should simply declare `self.the_time = ''` in your __init__ for your class.
Personally, I would have written the function more like this:
def update_time(self):
self.display_time.config(text=time.strftime('%H:%M:%S'), font='40')
self.after(20, self.update_time)
Then at the end of my __init__ function I would call self.update_time()
I'm not sure how that will work with your current setup, though.
I found some help on the internet about making a clock, although I had to modify a lot of the code to fit my own code and window.
Now to my next question. Say that I want a text “Hi, how are you?” to be printed when the time passes 15:00:00 each day. How do I do that?
At first I thought that I could just write an if statement. Like:
if the_time>15:00:00:
print (“Hi, how are you?”)
But it is obviously not working.
You can write one very similar to that. Take a look at the time.localtime method.
Thank you for your help! Another question, am I supposed to add tutor at python.org; as copy? You did that, right?
Yes - if you click "reply to all" in your email client, that will automatically send it to tutor at python.org
HTH,
Wayne
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20111116/fbe221f6/attachment-0001.html>
More information about the Tutor
mailing list