tkinter копирование содержимого scrolledtext

Как скопировать в буфер обмена введённый текст в scrolledtext ?

from tkinter import *
from tkinter import scrolledtext

root = Tk()
root.geometry('400x200+600+300')

def copy():
    txt.clipboard_append(txt)

btn = Button(root, text='скопировать', command=copy)
btn.place(x=15, y=15)

txt = scrolledtext.ScrolledText(root, width=33, height=11)
txt.place(x=100, y=10)

root.mainloop()

сейчас по клику в буфер копируется >>> !frame


Ответы (1 шт):

Автор решения: insolor

txt - это сам объект ScrolledText. При копировании в буфер обмена у вас попадает str(txt), но это не текстовое содержимое виджета, имя класса tcl. Чтобы получить из виджета текст, нужно вызвать метод get (аналогично объекту Text - см. например Tkinter Text):

def copy():
    txt.clipboard_clear()  # Очистить буфер обмена
    txt.clipboard_append(txt.get(1.0, END))  # Скопировать текст в буфер обмена
→ Ссылка