在tkinter with Python3.7中,事件绑定的默认行为是在释放鼠标之前单击鼠标后不会触发“<;Enter>;”事件。我打算实现一个可滚动表,这样它就可以检测到“<;Button-1>;”(鼠标左键单击向下)和“<;ButtonRelease-1>;”(鼠标左键单击向上)”事件,并将每个表行的小部件“<;Enter>;”事件绑定起来,以检测鼠标指针何时进入不同的表行。通过这种方式,我可以通过单击一行并在表中拖动来滚动表。我的假设是,即使按住鼠标键也会触发“<;Enter>;”事件,这是不正确的。所以,我的整个滚动实现遇到了麻烦。我需要在鼠标按下时触发这些事件,否则它就不起作用了。我在做类似的事情:from tkinter import *
class App:
def __init__(self):
self.root = Tk()
# The name kwarg is used to infer the index of the row in the event handlers.
self.labels = [Label(text=f"Label #{i}", name=f"row-{i}") for i in range(5)]
for row, label in enumerate(self.labels):
label.bind("", self.mouse_down)
label.bind("", self.mouse_up)
label.bind("", self.mouse_enter)
label.grid(row=row, column=0)
mainloop()
def mouse_up(self, event):
idx = self.index_from_event(event)
# Do some with the row with the passed index
def mouse_down(self, event):
idx = self.index_from_event(event)
# Do some with the row with the passed index
def mouse_enter(self, event):
# I would like for this to be triggered even when the mouse is pressed down.
# However, by default tkinter doesn't allow this.
pass
def index_from_event(self, event):
# Get the index of the row from the labels name string.
return str(event.widget).split('-')[-1]
在tkinter中按住鼠标按钮1时,有什么方法可以启用鼠标输入事件?efffbot(http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm)上所有关于enter事件的文档都是:
^{pr2}$