Я внедрил стандартную копию & вставку для текстового редактора, который я пишу, но, похоже, я неправильно понял поведение метода insert-method виджета scrolledtext в tkinter: мой код не ведет себя так, как я ожидал ,python, tkinter: текст дважды вставлен из буфера обмена - почему?
Здесь как минимальный пример. Это окно с виджлетом scrolledtext и кнопка, загружающая образец файла 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()