Python 将鼠标单击绑定到实例的小部件

Python 将鼠标单击绑定到实例的小部件,python,binding,tkinter,Python,Binding,Tkinter,我有一个对象的实例,“cal”。当我将按钮单击绑定到cal时,调用的函数仅在我单击ttcalendar框架的角落时执行;当我单击实际日历区域时,当ttkcalendar函数执行时,我的绑定不会执行 这段代码在我单击框架角点时运行 # Calendar Frame self.cal=Calendar(LeftFrame) self.cal.pack(side=TOP) self.cal.bind("<Button-1>",self.clicked) 日历框架

我有一个对象的实例,“cal”。当我将按钮单击绑定到cal时,调用的函数仅在我单击ttcalendar框架的角落时执行;当我单击实际日历区域时,当ttkcalendar函数执行时,我的绑定不会执行

这段代码在我单击框架角点时运行

# Calendar Frame
    self.cal=Calendar(LeftFrame)
    self.cal.pack(side=TOP)
    self.cal.bind("<Button-1>",self.clicked)
日历框架 self.cal=日历(LeftFrame) 自校准组件(侧面=顶部) self.cal.bind(“,self.clicked) 我想,如果我尝试绑定到日历的canvas对象,它就会工作。但是,此代码返回AttributeError:Calendar实例没有属性画布

# Calendar Frame
    self.cal=Calendar(LeftFrame)
    self.cal.pack(side=TOP)
    self.cal.canvas.bind("<Button-1>",self.clicked)
日历框架 self.cal=日历(LeftFrame) 自校准组件(侧面=顶部) self.cal.canvas.bind(“,self.clicked)
正如我所说的,内部ttkcalendar绑定对于所示的切换日期来说工作正常。有什么见解吗?谢谢

错误信息应该非常清楚。如果python告诉您“
AttributeError:Calendar实例没有属性画布”
,则必须假设这是真的

查看
Calendar
类的源代码,我没有看到任何
canvas
属性。正如错误告诉您的,您正在尝试访问一个不存在的属性


Calendar
类确实有一个名为
\u canvas
的属性,也许您可以尝试改用它。尽管如此,前导下划线表示它是一个私有属性,可能会在以后的代码修订中消失。

Hi,我也尝试过,但没有任何效果。。有没有办法让点击事件同时在小部件和它所在的框架上注册?@user3883010:我不太明白你在问什么。您当然可以在多个小部件上进行相同的绑定。只需绑定到列表框,并在框架上进行相同的绑定。还有其他技巧,但这取决于你的目标是什么。在这个网站上搜索“bindtags”可以看到其他一些更高级的绑定技术。如果您单击它,它将突出显示所选日期。似乎唯一的公共函数是selection,它返回当前所选日期的日期名。我想要的是让包含这个日历实例的代码也有一个绑定,这样当单击日历时,我可以调用代码中的另一个函数。正如我所看到的,单击只运行calendar实例的内部事件,而不运行其容器的外部功能。