点击事件
tkinter
中有<Button-1>
事件,但这个事件只是在鼠标按下时触发,直接使用这个不属于点击。点击应为鼠标放上按钮>按下鼠标>放开鼠标>依然在按钮上>
。
编程
我们需要先绑定这些事件。
self.bind("<Enter>", self._event_enter, add="+")
self.bind("<Leave>", self._event_leave, add="+")
self.bind("<Button-1>", self._event_on_button1, add="+")
self.bind("<ButtonRelease-1>", self._event_off_button1, add="+")
这里点击需要两个参数,一个是是否鼠标还在按钮上,一个是鼠标是否按下。在最后鼠标放开触发事件,如果鼠标还在按钮上,将触发事件<<Clicked>>
。
def _event_enter(self, event=None):
self.enter = True
def _event_leave(self, event=None):
self.enter = False
def _event_on_button1(self, event=None):
self.button1 = True
def _event_off_button1(self, event=None):
self.button1 = False
if self.enter:
#self.focus_set()
self.event_generate("<<Clicked>>")
之后如果需要用到点击事件,直接使用bind
就可以了
self.bind("<<Clicked>>", lambda event=None: print("这里改为其他方法"))