Почему в CustomTkinter не работают Ctrl+C / Ctrl+V и как это починить
Писал админку на CustomTkinter и наткнулся на классический баг: стандартное контекстное меню (правая кнопка мыши) с «Копировать/Вставить» просто не работает. Точнее, оно появляется, но при нажатии ничего не происходит.
Проблема в том, что CTkEntry наследуется от tkinter, но не обрабатывает системные виртуальные события (<<Copy>>, <<Paste>>) так, как мы привыкли.
Как это выглядит в коде (не работает):
menu.add_command(label="Вставить", command=lambda: entry.event_generate("<<Paste>>"))
Как это реально починить:
Нужно обращаться напрямую к системному буферу обмена (clipboard) через методы самого виджета.
import tkinter as tk def paste_text(entry_widget): try: text = entry_widget.clipboard_get() if entry_widget.selection_present(): entry_widget.delete(tk.SEL_FIRST, tk.SEL_LAST) entry_widget.insert(tk.INSERT, text) except tk.TclError: pass menu.add_command(label="Вставить", command=lambda: paste_text(my_entry))
Для «Копировать» логика похожая: проверяем selection_present(), берем selection_get() и кидаем в clipboard_append().
В итоге меню заработало идеально. Кто еще сталкивался с таким в CTk? Или вы юзаете pyperclip для таких задач?