tkinter使用ID设置焦点

时间:2015-01-30 08:26:34

标签: python linux tkinter focus

Python 3.3 CentOS 7

我有一些椭圆被绘制为画布的实例,您可以单击并拖动它们之间绘制一条线。当在绘制线条时将鼠标放在椭圆形上方时,线条的末端需要捕捉到椭圆形的中心。为了使它能够工作,你必须让释放的椭圆形成焦点,否则你不会触发获得椭圆形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设置焦点。

1 个答案:

答案 0 :(得分:0)

尝试更改焦点不是正确的解决方案。按钮释放事件将始终触发按下按钮的小部件。

解决方案是使用画布' find_nearest方法查找最靠近光标的画布对象。