如何检测按下的鼠标何时进入不同帧中的窗口小部件

Sam*_*Sam 3 python drag-and-drop tkinter

我有一个ttk Treeview(在Tk中的一个Frame中)和一个tk Listbox(在Toplevel中).我的意图是做以下事情:

  1. 在Treeview中按鼠标按钮1
  2. 将(按下的)鼠标移动到列表框
  3. 鼠标进入时,将焦点设置为包含列表框的Toplevel

现在,当未按下的鼠标进入时,我可以设置Toplevel的焦点.我用过.bind("<Enter>").

当我使用时,.bind("<B1-Motion>")我可以检测到按下鼠标的动作.但只有我在列表中按下鼠标.

当我使用时,.bind("<B1-Enter>")我没有得到任何事件.

如何检测其他按下的鼠标是否进入我的列表框?

Bry*_*ley 5

您需要设置绑定<B1-Motion>.然后,在回调中,您可以使用该winfo_containing方法来确定光标下的哪个小部件.您可以使用event.x_rootevent.y_root作为参数winfo_containing来查找小部件:

self.bind_all("<B1-Motion>", self.on_motion)
...
def on_motion(self, event):
    widget = self.winfo_containing(event.x_root, event.y_root)
    ...
Run Code Online (Sandbox Code Playgroud)

  • 非常非常感谢你!顺便说一句......在搜索了 tk GUI 的东西之后,总是你给出了完美的答案:)。 (3认同)