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 have now worked to stop using the global scope and instead put my prior
global variable into
the constructor in the class. I believe that I have managed to do that now.
Do you believe that this is correctly done?
#Trying putting the_time'' in constructor instead of
#putting it in the global scope to shorten code.
from tkinter import*
import time
import os
class Window(Frame):
def __init__(self,master):
super (Window,self).__init__(master)
self.grid()
self.the_time=''
self.create_widgets()
self.update_time()
def create_widgets(self):
#Create a hello Button:
self.hellobttn=Button(self, text="Hey")
self.hellobttn.grid(row=0, column=1)
#Create a label that displays time.
self.display_time=Label(self, text=self.the_time)
self.display_time.grid(row=1, column=1)
def update_time(self):
self.display_time.config(text=time.strftime('%H:%M:%S'), font='40')
self.after(20, self.update_time)
root=Tk()
root.title("Test")
root.geometry("200x200")
app=Window(root)
root.mainloop()
I get no error while doing this, and the program works fine.
I have another question.
Say that I have a class and I want to make 100 objects.
Then it could look like this:
#How to shorten this?
#Create the class.
class Chairs(object):
def __init__(self, age, weight):
self.age=age
self.weight=weight
def __str__(self):
rep=self.age+self.weight
return rep
#Create the objects
chair1=Chairs("10","20")
chair2=Chairs("10","20")
chair3=Chairs("10","20")
chair4=Chairs("10","20")
chair5=Chairs("10","20")
chair6=Chairs("10","20")
chair7=Chairs("10","20")
chair8=Chairs("10","20")
chair9=Chairs("10","20")
#And so on
How do I shorten this? I have thought of using a for sling. I have looked in my
programming
book and on the internet, but I don’t know how to make this shorter. The
arguements (“10”, “20”)
should be the same for every object, which should make it easier than if they
were different each time?
Right now, it feels like a lot of my code in my other programs could be made
dramatically shorter.
Thanks!
_______________________________________________
Tutor maillist - [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor