Я хотел бы создать пункты меню (в строке меню, а не во всплывающем окне, вызываемом правой кнопкой мыши), которые могут вырезать / копировать / вставлять любой выбранный текст.
Эквивалентная клавиатураКоманды уже работают, и я ничего не сделал для их включения .Например, я могу ввести текст в поле ввода, вырезать его с помощью Control-X и вставить его (или в другом месте) с помощью Control-C.
Посты по теме, которые я видел, сводятся квырезать / копировать / вставить для отдельных виджетов, но это уже работает.Как мне сделать пункты меню активировать их?
Спасибо.
РЕДАКТИРОВАТЬ: Просто чтобы быть ясно, вопросы:
- как сделать пункты менюдля вырезания / копирования действует любой текст, выбранный в любом виджете
- как сделать так, чтобы пункт меню вставки вставлял текст везде, где находится текстовый курсор
Опять же, ключевые команды делают это(Control-x, Control-c, Control-v) уже работают, а я ничего не сделал. Я знаю, как сделать меню ;вопрос только в том, какую команду я должен прикрепить к пунктам меню, чтобы получить желаемый эффект.
РЕДАКТИРОВАТЬ 2: Хорошо, у меня есть способ, который работает.Поскольку ключевые команды уже работают, мы можем просто сгенерировать их.В моем случае все записная книжка с именем noteBook, поэтому
lambda: self.noteBook.event_generate('<Control-x>')
режет по желанию.Например:
editmenu.add_command(label="Cut", accelerator="Ctrl+X", command=lambda: self.noteBook.event_generate('<Control-x>'))
Используется: https://github.com/lnmaurer/qubit-control-interface/commit/c08c10a7fbc4a637c1e08358fb9a8593dfdf116e
Тем не менее, вероятно, есть более чистый способ сделать это;пожалуйста, ответьте, если знаете это.