python,tkinter:从剪贴板粘贴文本两次 - 为什么?

python, tkinter: text is pasted twice from clipboard - why?

我为我编写的文本编辑器实现了标准的复制和粘贴功能,但我似乎没有正确理解 tkinter 中滚动文本小部件的插入方法的行为:我的代码不符合要求我希望。

这里是最小的例子。它是一个 window,带有滚动文本小部件和一个将示例文件 "Test.txt" 加载到文本小部件的按钮和一个结束按钮。复制和粘贴功能是通过快捷键 ctrl-c、ctrl-v 实现的。在粘贴时,代码将剪贴板的内容插入两次而不是一次,我完全不知道为什么。谁能告诉我我做错了什么?提前致谢!

import tkinter, tkinter.scrolledtext

def ende():
    main.destroy()

def loadSampleFile():
    d=open("Test.txt")
    z=d.readline()
    while z:
    t.insert("end",z)
    z=d.readline()
    d.close()

def paste(event_obj):
    text2paste=t.selection_get(selection='CLIPBOARD')
    print(t.clipboard_get())
    t.insert('insert',text2paste)

def copy2clipboard(event_obj):
    text2copy=t.get(tkinter.SEL_FIRST,tkinter.SEL_LAST)
    t.clipboard_clear()
    t.clipboard_append(text2copy)

main=tkinter.Tk()
t=tkinter.scrolledtext.ScrolledText(main, width=40, height=1)
t.pack()
t.bind('<Control-c>',copy2clipboard)
t.bind('<Control-v>',paste)

bshow=tkinter.Button(main, text="Show File", command=loadSampleFile)
bshow.pack()

bende=tkinter.Button(main, text="end", command=ende)
bende.pack()


main.mainloop()

是因为ctrl-cctrl-v 已经实施。

因此,当您执行 ctrl-v 时,它会为已实现的方法粘贴一次,并为您的方法粘贴一次。只需删除整体绑定,或者如果您想在 ctrl-v 上执行某些操作,则在您的方法中删除 insert