所以我在Python中有这个代码:
class Chronometre(Frame):
def __init__(self, parent=None, **kw):
Frame.__init__(self, parent, kw)
self._start = 0.0
self._elapsedtime = 0.0
self._running = 0
self.timestr = StringVar()
self.makeWidgets()
def _update(self):
self._elapsedtime = time.time() - self._start
self._setTime(self._elapsedtime)
self._timer = self.after(50, self._update)
def Start(self):
if not self._running:
self._start = time.time() - self._elapsedtime
self._update()
self._running = 1
def Stop(self):
if self._running:
self.after_cancel(self._timer)
self._elapsedtime = time.time() - self._start
self._setTime(self._elapsedtime)
self._running = 0
def Reset(self):
self._start = time.time()
self._elapsedtime = 0.0
self._setTime(self._elapsedtime)
def Clavier(event):
print(event.keysym)
if event.keysym == 'a' :
sw = Chronometre()
sw.Start()
sv = Chronometre()
sv.Start()
if event.keysym == 'z' :
sw = Chronometre()
sw.Stop()
if event.keysym == 'e' :
sv = Chronometre()
sv.Stop()
if event.keysym == 'r' :
sw = Chronometre()
sw.Reset()
sv = Chronometre()
sv.Reset()
def main():
root = Tk()
root.bind("<Key>",Clavier)
我的一个朋友正试图在敲击钥匙时启动一个功能,但它没有启动该功能。有人知道为什么会这样吗?我知道程序会进入if语句,但它不会启动该函数。
可能是因为它在一个类中吗?
答案 0 :(得分:4)
您似乎无法实例化您的课程或调用他们的方法。
if event.keysym == 'a' :
sw = Chronometre()
sw.Start()
等等。
答案 1 :(得分:0)
首先,您必须运行Tkinter mainloop才能执行任何操作,例如catch键
root.mainloop()
其次,Start()函数包含尚未声明的变量,因此第一次出现错误,即self._running和self._elapsedtime。此外,函数_setTime()尚未声明。