python:将代码转换为类

2024-04-20 09:29:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我只是在学习python和跳进课堂。我一直在使用下面的代码为一个简单的秒表,我发现。我现在想用这段代码创建一个类。我将有1-4个计时器在屏幕上的任何时间。我需要启动他们在同一时间,但结束每个定时器独立。我仍在努力,但任何帮助将不胜感激。你知道吗

import Tkinter as tk

def update_timeText():
     if (state):
    global timer
    timer[2] += 1

    if (timer[2] >= 100):
        timer[2] = 0
        timer[1] += 1
    if (timer[1] >= 60):
        timer[0] += 1
        timer[1] = 0
    timeString = pattern.format(timer[0], timer[1], timer[2])
    timeText.configure(text=timeString)
root.after(10, update_timeText)

def start():
    global state
    state = True

def pause():
    global state
    state = False

def reset():
    global timer
    timer = [0, 0, 0]
    timeText.configure(text='00:00:00')

def exist():
    root.destroy()

state = False

root = tk.Tk()
root.wm_title('Simple Kitchen Timer Example')

timer = [0, 0, 0]
pattern = '{0:02d}:{1:02d}:{2:02d}'

timeText = tk.Label(root, text="00:00:00", font=("Helvetica", 150))
timeText.pack()

startButton = tk.Button(root, text='Start', command=start)
startButton.pack()

pauseButton = tk.Button(root, text='Pause', command=pause)
pauseButton.pack()

resetButton = tk.Button(root, text='Reset', command=reset)
resetButton.pack()

quitButton = tk.Button(root, text='Quit', command=exist)
quitButton.pack()

Tags: 代码textifdefupdatebuttonrootglobal
2条回答

这是我的解决办法。我花了很长时间才开始思考这个课程的创作。有什么改进的办法吗?你知道吗

import Tkinter as tk

root = tk.Tk()
root.wm_title('Stopwatch Class')
root.geometry("300x350")


class StopWatch(object):
    def __init__(self):
        self.pattern = '{0:02d}:{1:02d}:{2:02d}'
        self.timer = [0, 0, 0]
        self.state = False
        self.timeText = tk.Label(root, text='00:00:01', font=("Helvetica", 15))
        self.timeText.pack()
        self.startButton = tk.Button(root, text='Start', command=self.start)
        self.startButton.pack()
        self.resetButton = tk.Button(root, text='Reset', command=self.reset)
        self.resetButton.pack()
        self.pauseButton = tk.Button(root, text='Pause', command=self.pause)
        self.pauseButton.pack()

    def update_timeText(self):

        if (self.state):
           self.timer[2] += 1

        if (self.timer[2] >= 100):
            self.timer[2] = 0
            self.timer[1] += 1
        if (self.timer[1] >= 60):
            self.timer[0] += 1
            self.timer[1] = 0
        self.timeString = self.pattern.format(self.timer[0], self.timer[1], self.timer[2])
        self.timeText.configure(text=self.timeString)
    root.after(10, self.update_timeText)

    def start(self):
        self.state = True

    def pause(self):
        self.state = False

    def reset(self):
        self.timer = [0, 0, 0]
        self.timeText.configure(text='00:00:00')

# create a new stopwatch
swatch1 = StopWatch()
swatch1.update_timeText()

# create a new stopwatch
swatch2 = StopWatch()
swatch2.update_timeText()

# create a new stopwatch
swatch3 = StopWatch()
swatch3.update_timeText()

root.mainloop()

要创建类,只需尝试以下操作:

import Tkinter as tk

class StopWatch(object):  # sub-class the object class maybe 

    def update_timeText(self):
        #your code logic...

    def start(self):
        #your code logic...

    #etc...


 #the rest of your functions are the same 
 #just specify the 'self' Python keyword before any other arguments in the function. :D

让我知道这是否有效。:D个

相关问题 更多 >