2016-03-01 2 views
2

Я использую Tkinter для создания небольшой программы, но у меня возникли проблемы со вставкой.Python - изменение поведения пасты в Tkinter

Я хочу, чтобы иметь возможность щелкнуть текст в текстовом виджере средней кнопкой мыши, не вставляя ничего. Я попытался вещи, как связывание над ним:

text.bind('<<Paste>>', lambda x: 'break') 

Но это только отключает клавиатуру Ctrl-V склеивание, а не средней кнопкой мыши. Это заставляет меня думать, что, возможно, это проблема X11 (я на Debian), но даже если это так, есть ли способ перехватить событие вставки? Я хотел бы сделать его как можно более переносимым.

+1

Загляните в 'text.tcl', который обычно находится в'/usr/share/tcltk8.6' на debian, чтобы узнать, какие привязки имеют текстовый виджет по умолчанию. Это скажет вам, что вам нужно для повторного связывания. – msw

+0

См. Также http://stackoverflow.com/questions/6433369/deleting-and-changing-a-tkinter-event-binding-in-python – msw

+1

Спасибо! Похоже на то, что мне нужно было связать, было '<< PasteSelection >>', а не '<>'. Это сохраняет вложение Ctrl-V, но отключает вставку среднего клика. Вы можете отправить его в качестве ответа, и я буду рад принять :) – TokenToucan

ответ

1

Связи по умолчанию для текстового виджета находятся в файле с именем text.tcl, который обычно находится в /usr/share/tcltk8.6 на Debian.

Изучив привязки по умолчанию, вы можете найти, что вы хотите переопределить, или unbind. Как вы упомянули в своем комментарии, вы обнаружили, что это был <<PasteSelection>>, а не связанный с <<Paste>>, который делал то, что вы не хотели.

Смежные вопросы