Привязка Python не работает - PullRequest
0 голосов
/ 27 мая 2018

У меня есть базовая заставка программы.Я хочу связать кнопку мыши 1, чтобы удалить все на экране, но когда я нажимаю кнопку 1, я получаю эту ошибку:

 Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python34\lib\idlelib\run.py", line 121, in main
    seq, request = rpc.request_queue.get(block=True, timeout=0.05)
  File "C:\Python34\lib\queue.py", line 175, in get
    raise Empty
queue.Empty

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python34\lib\tkinter\__init__.py", line 1533, in __call__
    return self.func(*args)
TypeError: delete() takes 0 positional arguments but 1 was given

.,,,Это моя программа:

import tkinter
canvas=tkinter.Canvas(width=1000,height=800)
canvas.pack()
from random import *

entry1=tkinter.Entry()
entry1.pack()





def setric():





    x=randrange(900)
    y=randrange(700)




    global a
    canvas.delete('all')
    farba=choice(("red","purple","blue","lightblue","green","lightgreen"))

    if a>-90:
        a=a-10
    else:
        a=-10


    if entry1.get()=="":
        canvas.update()
        canvas.after(3000,setric)
        a=0


    else:

        canvas.create_text(x,y,text=entry1.get(),font="Arial 40",fill=farba,angle=a)

        canvas.after(2000, setric)
def delete():
    canvas.delete("all")
a=0        
setric()

canvas.bind('<Button-1>',delete)

Даже когда я изменяю то, что находится в def delete, я все равно получаю ошибку.Спасибо за ваше время!Я новичок в этом, поэтому я понятия не имею, в чем проблема ....................................................................................................................................................................................................................................................

1 Ответ

0 голосов
/ 28 мая 2018

Функции, вызываемые через привязки, автоматически передаются объекту, представляющему событие.Ваш метод delete должен иметь возможность принимать этот параметр, даже если вы его не используете.

def delete(event):
    canvas.delete("all")
...