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对象。
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对象。