tkinter 使用 ID 设置焦点

tkinter Set focus using ID

Python 3.3 中央操作系统 7

我绘制了一些椭圆作为 canvas 的实例,您可以单击并拖动它们以在它们之间画一条线。在画线时将鼠标放在椭圆上时,线的末端需要捕捉到椭圆的中心。为了让它工作,你必须让你释放的椭圆成为焦点,否则你不会触发获得椭圆的 xy 位置所需的按钮释放事件。

我可以使用以下代码获取椭圆的 ID

#get id's of items under cursor
    idList = can.find_overlapping(event.x, event.y, event.x, event.y)
    #Test if id is a anchorIn and return xy
    if len(idList) > 0:
        for items in idList:
            item = can.itemcget(items, "tag")
            for tags in item:
                if "anchorIn" in item:
                    #Get coords of anchor
                    stop = can.coords(items)
                    print(items)
                    self.stop[0] += self.anchorScale / 2
                    self.stop[1] += self.anchorScale / 2
                    #Mouse release event will not work without bringing anchor to focus
                    break

问题是似乎没有任何方法可以使用 ID 设置焦点。

试图改变焦点不是正确的解决办法。按钮释放事件将始终为按下按钮的小部件触发。

解决方法是使用canvas'find_nearest方法找到距离光标最近的canvas对象。