首页 > 解决方案 > 画布未绑定到类中的鼠标按钮,tkinter-Python3

问题描述

我一直在尝试将画布绑定到鼠标单击,如this answer中所述,但在一个类中。该callback函数没有被调用。这里的所有相关 问题似乎都是callback()在尝试绑定时调用函数,而不是引用它。我正在引用它,但它仍然不起作用。

from tkinter import *

class BindingTrial():
    def __init__(self,root,canvas):
        self.root = root
        self.canvas = canvas
        self.canvas.bind("Button-1",self.callback)

    def callback(self,event):
        print ("clicked at", event.x, event.y)

root = Tk()
canvas= Canvas(root, width=100, height=100)
bt = BindingTrial(root,canvas)
canvas.pack()
root.mainloop()

标签: pythoncanvastkintertkinter-canvas

解决方案


您需要使用 调用按钮绑定"<Button-1>",并且回调应接受 self 作为第一个参数。

class BindingTrial():
    def __init__(self,root,canvas):
        self.root = root
        self.canvas = canvas
        self.canvas.bind('<Button-1>',self.callback)

    def callback(self, event):
        print ("clicked at", event.x, event.y)  

推荐阅读