超过最大递归深度。尝试在Tkinter Python中创建计时器

超过最大递归深度。尝试在Tkinter Python中创建计时器,python,tkinter,Python,Tkinter,我试图在Tkinter中创建一个计时器。这是我的工作示例: # GUI packages from Tkinter import * from ttk import * from tkMessageBox import * sec = 0 #_ class RunMeasurement

我试图在Tkinter中创建一个计时器。这是我的工作示例:

# GUI packages                                                         
from Tkinter import *                       
from ttk import *           
from tkMessageBox import *  

sec = 0            
#_

class RunMeasurement(Tk):   

    def __init__(self, *args, **kwargs):

        Tk.__init__(self, *args, **kwargs)
        Tk.style = Style()  
        Tk.title = 'Data sheet creation'

        self.__timeLabel = None

        myFrame = Frame(self)
        myFrame.pack(fill='both')

        self.__timeLabel = Label(myFrame)
        timeButton = Button(myFrame, text='start', command=self.Tick)
        timeButton.grid(row=0, column=0)
        self.__timeLabel.grid(row=0, column=1)


    def Tick(self):  

        global sec
        sec += 1     

        self.__timeLabel['text'] = sec
        self.__timeLabel.after(1000, self.Tick)


if __name__ == '__main__':
    app = RunMeasurement()
    app.mainloop()
但是,如果我尝试对其进行一点更改,例如,每次按2或3进行计数,这样仅更改了前面代码的相应部分:

...
timeButton = Button(myFrame, text='start', command=lambda: self.Tick(3))
...
def Tick(self, index):
   ...
   sec += index
   ...
   self.__timeFrame.after(1000, self.Tick(index))
我很快就明白了。然后是运行时错误:

RuntimeError: maximum recursion depth exceeded while calling a Python object

问题:如何处理此错误?如何在Tkinter中创建这样的计时器?

问题在下面一行

self.__timeFrame.after(1000, self.Tick(index))
通过调用self.Tick直接创建递归。要解决这个问题,请将索引作为另一个参数传递给after方法,如下所示

self.__timeFrame.after(1000, self.Tick, index)

当然,我应该学会后的方法更好。谢谢。这类似于调用函数,而不是为按钮命令参数传递函数,就像在FWIW中一样,您可能会发现这很有趣。