Python 3.x 如何在类函数中使用self和event?

Python 3.x 如何在类函数中使用self和event?,python-3.x,tkinter,tkinter-canvas,Python 3.x,Tkinter,Tkinter Canvas,无论我如何尝试,我总是得到一个错误,我需要向事件发送一个参数 是的,在你说去之前,看看文件。我已经看过了,但它对我所做的没有帮助,因为它从来都不是在课堂上 from tkinter import * class App(Tk): def __init__(self): Tk.__init__(self) self.callback() self.initUI() self.mainloop() def call

无论我如何尝试,我总是得到一个错误,我需要向事件发送一个参数

是的,在你说去之前,看看文件。我已经看过了,但它对我所做的没有帮助,因为它从来都不是在课堂上

from tkinter import *

class App(Tk):
    def __init__(self):
        Tk.__init__(self)
        self.callback()
        self.initUI()

        self.mainloop()

    def callback(self, event):
        print("made it")

    def initUI(self):

        canvas = Canvas(self, height = 300, width = 300)
        canvas.create_rectangle(1.5,1.5,40,40, tag = "obj1")
        canvas.tag_bind("obj1", '<Button-1>', callback) #where I assume the problem is happening

A = App()
从tkinter导入*
类应用程序(Tk):
定义初始化(自):
Tk.\uuuuuu初始(自我)
self.callback()
self.initUI()
self.mainloop()
def回调(自身、事件):
打印(“成功”)
def initUI(self):
画布=画布(自身,高度=300,宽度=300)
画布。创建_矩形(1.5,1.5,40,40,tag=“obj1”)
canvas.tag_bind(“obj1”,“”,callback)#我假设问题发生在这里
A=应用程序()

编辑:回调一直说它需要另一个参数,但我不知道它需要什么

您已将回调定义为接受两个参数:
self
(意思是,它是对象上的一个方法)和
event
。当您使用
self.callback()
直接调用它时,
self
会自动传递,但您不会传递事件。这就是为什么你会得到错误,说它需要另一个参数。它期望两个,但只得到一个

通过直接调用回调函数,您试图做什么还不清楚,但一个快速修复方法是将
事件
属性设置为可选,这样您就可以直接或通过绑定调用回调函数。当然,这只有在绑定没有实际使用
事件
参数时才有效。如果是这样,在没有
事件的情况下调用它时
可能会失败

下面是一个使
事件
参数可选的示例:

def callback(self, event=None):
    print("made it")
这解决了一个问题,但您还必须更改绑定的定义方式,否则代码在启动时会崩溃。您需要在回调前添加
self

canvas.tag_bind("obj1", '<Button-1>', self.callback) 

给我们一个尽可能小的例子来说明你的问题。如前所述,您的问题过于宽泛和不集中,可能会被关闭。请详细说明“向事件发送论点”的含义。
A = App()
A.mainloop()