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

时间:2015-07-25 09:39:49

标签: tkinter tk

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

基本上我想知道在按下鼠标按钮时鼠标坐标是否在索引"10.end"的坐标之前或之后(例如)。

行号可以是任何内容。当鼠标被按下但尚未释放时,我无法使用current

1 个答案:

答案 0 :(得分:2)

如果您要比较鼠标是否在一个字符之前或之后,您不需要将索引转换为坐标以执行您想要的操作。您可以直接将索引与事件的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)

如果您要比较鼠标是否位于另一个角色的左侧或右侧(无论y坐标如何),您唯一的选择是获取角色的x,y并自行进行比较。

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