I want to make a python class with this code that will create a window and multiple timers in it but I don't know how to do it I tried many solutions but I am pretty bad at class plz help
import time
from Tkinter import *
root = Tk()
def start():
global is_reset
selected_time = int(spin.get())
is_reset = False
if selected_time > 0:
spin["state"] = "disable"
while is_reset == False and selected_time != -1:
lbl["text"] = selected_time
selected_time -= 1
root.update()
time.sleep(0.1)
spin["state"] = "normal"
else:
None
def reset_():
global is_reset
is_reset = True
n.set(0)
lbl["text"] = 0
lbl_frame = Frame(root , width = 100 , height=100 ,bg="blue")
lbl_frame.grid(row=1)
lbl = Label(lbl_frame ,text="0")
lbl.place(x=15 , y=10)
n = IntVar()
spin = Spinbox(lbl_frame , from_=0, to=59,width=3,textvariable=n)
spin.place(x=60,y=10)
btn_start = Button(lbl_frame, text="start",width=3, command=start).place(x=5,y=60)
btn_reset = Button(lbl_frame, text="reset",width=3,command=reset_).place(x=60,y=60)
mainloop()
CodePudding user response:
you can make a class with any name like:
class program:
root = Tk()
def __init__(self):
//in this init function you specify the common variables that will be input in the class like this:
self.variable = variable
def start():
global is_reset
selected_time = int(spin.get())
is_reset = False
if selected_time > 0:
spin["state"] = "disable"
while is_reset == False and selected_time != -1:
lbl["text"] = selected_time
selected_time -= 1
root.update()
time.sleep(0.1)
spin["state"] = "normal"
else:
None
def reset_():
global is_reset
is_reset = True
n.set(0)
lbl["text"] = 0
take care of the indentation
also the other code you can use
if __name__=="__main__":
lbl_frame = Frame(root , width = 100 , height=100 ,bg="blue")
lbl_frame.grid(row=1)
lbl = Label(lbl_frame ,text="0")
lbl.place(x=15 , y=10)
n = IntVar()
spin = Spinbox(lbl_frame , from_=0, to=59,width=3,textvariable=n)
spin.place(x=60,y=10)
btn_start = Button(lbl_frame, text="start",width=3, command=start).place(x=5,y=60)
btn_reset = Button(lbl_frame, text="reset",width=3,command=reset_).place(x=60,y=60)
you can use the class functions like:
program(input***).start()
CodePudding user response:
import time
from tkinter import * # tkinter not Tkinter
class Timers:
def __init__(self):
self.root = Tk()
self.is_reset = False
self.lbl_frame = Frame(self.root , width = 100 , height=100 ,bg="blue")
self.lbl_frame.grid(row=1)
self.lbl = Label(self.lbl_frame ,text="0")
self.lbl.place(x=15 , y=10)
self.n = IntVar()
self.spin = Spinbox(self.lbl_frame , from_=0, to=59,width=3,textvariable=self.n)
self.spin.place(x=60,y=10)
self.btn_start = Button(self.lbl_frame, text="start",width=3, command=self.start).place(x=5,y=60)
self.btn_reset = Button(self.lbl_frame, text="reset",width=3,command=self.reset_).place(x=60,y=60)
mainloop()
def start(self):
selected_time = int(self.spin.get())
self.is_reset = False
if selected_time > 0:
self.spin["state"] = "disable"
while self.is_reset == False and selected_time != -1:
self.lbl["text"] = selected_time
selected_time -= 1
self.root.update()
time.sleep(0.1)
self.spin["state"] = "normal"
else:
None
def reset_(self):
self.is_reset = True
self.n.set(0)
self.lbl["text"] = 0
timer = Timers()
timer.start()
CodePudding user response:
thanks to @Super sub i got my answer ,,,,,,,
class Timers: global root root = Tk() root.geometry("300x300") def init(self , X,Y): global root def display_s(): self.lbl["text"] = self.spin.get() self.is_reset = False self.th = threading.Thread(target=start) self.lbl_frame = Frame(root , width = 100 , height=100 ,bg="blue") self.lbl_frame.place(x=X,y=Y) self.lbl = Label(self.lbl_frame ,text="0") self.lbl.place(x=15 , y=10) self.Numinspin = IntVar() self.spin = Spinbox(self.lbl_frame , from_=0, to=59,width=3 , textvariable= self.Numinspin , command=display_s) self.spin.place(x=60,y=10) self.btn_start = Button(self.lbl_frame, text="start",width=3, command=self.start).place(x=5,y=60) self.btn_reset = Button(self.lbl_frame, text="reset",width=3,command=self.reset_).place(x=60,y=60) mainloop() def start(self): selected_time = int(self.spin.get()) self.is_reset = False if selected_time > 0: self.spin["state"] = "disable" while self.is_reset == False and selected_time != -1: self.lbl["text"] = selected_time selected_time -= 1 root.update() time.sleep(0.1) self.spin["state"] = "normal" else: None def reset_(self): self.is_reset = True self.Numinspin.set(0) self.lbl["text"] = 0 ,,,,,,,
