我正在尝试使用类用tkinter创建一个简单的Gui。 但我真的不明白如何在count
方法中使 for 循环工作,谁能告诉我应该在哪里添加缺少的参数?
from tkinter import *
import time
class App:
def __init__(self, master):
self.container1 = Frame(master)
self.container1.pack()
self.button1 = Button(self.container1, text="count")
self.button1.bind("<Button-1>", self.count)
self.button1.pack()
def count(self):
for i in range(100):
self.button1["text"] = str(i)
time.sleep(1)
root = Tk()
Myapp = App(root)
root.mainloop()
错误是:
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.5/tkinter/__init__.py", line 1553, in __call__
return self.func(*args)
TypeError: count() takes 1 positional argument but 2 were given
绑定事件时,会向回调函数提供位置参数event
。
将count
方法更改为:
def count(self, event):
您还需要摆脱time.sleep(1)
因为.sleep()
是一个阻塞调用,这意味着它将阻塞 tkinter 主循环,这将导致您的程序没有响应。