【发布时间】:2020-09-09 14:59:50
【问题描述】:
我想在我的文本编辑器中实现文本拖放功能。到目前为止,我得到了event.data 删除的文本,以及event.x_root 和event.y_root 删除文本的位置。请帮助我通过放置位置设置 tk.Text 的插入光标。
我使用tkdnd2.8 作为扩展,TkinterDnD2 作为包装。
这是我的代码:
import tkinter as tk
import TkinterDnD2.TkinterDnD as tkdnd
def drop(event):
print("x: %d"%event.x_root, "y: %d"%event.y_root, "text:'%s'"%event.data)
root = tkdnd.Tk()
text = tk.Text(root, width=50, height=10)
text.pack()
text.drop_target_register("DND_Text")
text.dnd_bind('<<Drop:DND_Text>>', drop)
root.mainloop()
如果我将一段文本“SomeText”拖到我的文本小部件上,这里是控制台输出:
x: 60 y: 306 text:'SomeText'
现在我正在努力解决如何将位置从像素比例转换为字符比例,以便我可以将其设置为文本小部件的 INSERT 光标并将文本插入到我的文本小部件中。
或者,我可以在特定位置发出"<Button-1>" 和"<ButtonRelease-1>" 事件吗?如果是这样,我该怎么做?
【问题讨论】:
-
您应该可以使用
"@60,306"作为.insert()的第一个参数来直接将文本放置在放置位置。 -
@jasonharper 嗨,
"@60,306"是什么意思?我在 Google 上没有得到这个字符串的任何结果。