【问题标题】:python, tkinter: text is pasted twice from clipboard - why?python,tkinter:文本从剪贴板粘贴两次 - 为什么?
【发布时间】:2017-01-06 14:42:34
【问题描述】:

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

这里是最小的例子。这是一个带有滚动文本小部件的窗口和一个将示例文件“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()

【问题讨论】:

    标签: python tkinter copy clipboard paste


    【解决方案1】:

    这是因为 ctrl-cctrl-v 已经实现了。

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

    【讨论】:

      猜你喜欢
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      相关资源
      最近更新 更多