底线:我将 python 3 与 tkinter 一起使用。有一个函数通过after(). 第一次调用后,它被中断并发生错误(我通过s键盘和方法调用bind)。这是代码的有问题的片段(如果我忘记了什么,我将尝试推送此处使用的所有导入并推送其他命令 - 不要怪我):
form tkinter import *
def stopwatch(event):
global test, after_id, milisec, sec, min, hour, x, y, z
if sec > 59:
sec = 0
min += 1
if min>59:
min = 0
hour += 1
if hour>23:
sec = 0
min = 0
hour = 0
if sec < 10:
x = '0'+str(sec)
else:
x = str(sec)
if min < 10:
y = '0'+str(min)
else:
y = str(min)
if hour < 10:
z = '0'+str(hour)
else:
z = str(hour)
after_id = window.after(1000, stopwatch)
label1.configure(text=str(z+':'+y+':'+x))
window = Tk()
window.bind("<s>",stopwatch)
label1 = Label(window, text='')
label1.config(font=('Ubuntu',20)
label1.grid()
window.mainloop()
这是错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 1699, in __call__
return self.func(*args)
File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 745, in callit
func(*args)
TypeError: stopwatch() missing 1 required positional argument: 'event'
Что делать?
但除此之外,代码中还有很多缺点——拼写错误、违反 PEP8、使用全局变量、重叠标准名称。而且尽管代码没有完全给出,部分程序逻辑被隐藏了,但有理由怀疑它也是错误的。