是否可以将tkinter文本索引转换为坐标?

是否可以将tkinter文本索引转换为坐标?,tkinter,tk,Tkinter,Tk,我知道在tkinterText小部件中可以将坐标转换为索引。但反过来也可能吗 基本上,我想知道当按下鼠标按钮时,鼠标坐标是在索引“10.end”的坐标之前还是之后(例如) 行号可以是任何东西。由于鼠标正在按下而尚未释放,我无法使用current如果要比较鼠标是在一个字符之前还是之后,则无需将索引转换为坐标即可。您可以直接将索引与事件的x、y坐标进行比较: def on_motion(event): event.widget.compare("@%s,%s" % (event.x, eve

我知道在tkinter
Text
小部件中可以将坐标转换为索引。但反过来也可能吗

基本上,我想知道当按下鼠标按钮时,鼠标坐标是在索引
“10.end”
的坐标之前还是之后(例如)


行号可以是任何东西。由于鼠标正在按下而尚未释放,我无法使用
current

如果要比较鼠标是在一个字符之前还是之后,则无需将索引转换为坐标即可。您可以直接将索引与事件的x、y坐标进行比较:

def on_motion(event):
    event.widget.compare("@%s,%s" % (event.x, event.y), "10.end")
...
text = tk.Text(...)
text.bind("<B1-Motion>", on_motion)
def on_运动(事件):
event.widget.compare(“@%s,%s”%(event.x,event.y),“10.end”)
...
text=tk.text(…)
text.bind(“,在运动时)
如果您试图比较鼠标是在另一个角色的左侧还是右侧(无论y坐标如何),您唯一的选择是获取角色的x,y,然后自己进行比较


为此,您可以使用文本小部件的
bbox
方法来获取特定索引的像素边界框。您将返回索引左上角的x/y,以及宽度和高度。然后可以将事件的
x
坐标与索引的
x
坐标进行比较。

我不能使用第一种方法,因为它不能区分
“x.end”
“x.end”
之后的坐标
event.widget.compare(“@%s,%s”%(event.x,event.y),“>”,“10.end”)
两者都是1。我将尝试使用第二种方法。@SureshSubedi:我不理解你的评论。什么是“x.end”?你的问题特别问“10.结束”。它确实能够区分其他角色之前和之后的角色——这正是它设计的目的。你真的想确定它是在其他x坐标的左边还是右边?是的,我想确定鼠标坐标是在给定索引之前还是之后<代码>比较(“%s,%s”%(event.x,event.y),“>”,“10.end”)即使鼠标在
“10.end”之后,也返回0。我想要一个方法,如果鼠标坐标在文本索引之后(右边),则返回1(True)。上面的注释包含错误,方法应返回0,但我无法再编辑它。@SureshSubedi:好的,如果您要查找索引的“右”或“左”,则比较是错误的解决方案。它只是检查一个索引是在另一个索引之前还是之后。