Home > Mobile >  how can i use this code as a class in python
how can i use this code as a class in python

Time:02-01

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 ,,,,,,,

  •  Tags:  
  • Related