drag-and-drop - 在不同的帧中,如何检测按下的鼠标进入小部件的时间

  显示原文与译文双语对照的内容

我有一个 ttk Treeview ( 在Tk的框架中) 和一个Tk列表框( 在顶层中) 。 我的目的是执行以下操作:

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

现在我可以在unpressed鼠标进入时设置顶级的焦点。 我使用了 .bind("<Enter>")

当我使用 .bind("<B1-Motion>") 时,可以检测到鼠标的移动。 但只有当我在名单里按下鼠标。

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

如何检测其他位置按下鼠标进入列表框的位置?

时间: 作者:

你将需要在 <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)
. . .

作者:
...