对于方法内部的循环:TypeError位置参数

时间:2018-06-10 16:26:41

标签: python class for-loop tkinter typeerror

我正在尝试使用类创建一个简单的Gui和tkinter。 但我真的不明白如何在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

1 个答案:

答案 0 :(得分:2)

绑定事件时,会向回调函数提供位置参数event

count方法更改为:

def count(self, event):

你还需要摆脱time.sleep(1),因为.sleep()是一个阻塞调用,这意味着它将阻止tkinter主循环,这会导致程序无法响应。