control-b: это зарезервировано? - PullRequest
1 голос
/ 30 июня 2011

Я был удивлен, когда функция, которую я написал в python / tkinter и привязал к Ctrl-b, вела себя странно (конкретно: она теряла значение выделенного текста, так что text.index (SEL_FIRST) был не определен).

Я был удивлен, когда, изменив более невероятные вещи, я связал его вместо чего-то другого - и это сработало!

Я искал, но ничего не нашел: Control-b привязан к чему-то по умолчанию в tkinter ???

1007 * Alessandro *

Ответы [ 2 ]

0 голосов
/ 02 июля 2011

Спасибо Брайан, вот ссылка - очевидно, на effbot http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm:

(...)

Вы можете использовать метод bind_class для изменить привязки в классе уровень, но это изменит поведение всех текстовых виджетов в приложение. Более простое решение - предотвратить распространение Tkinter событие для других обработчиков; просто вернись строка «разрыв» от вашего мероприятия Обработчик:

def ignore(event):
    return "break"
text.bind("<Return>", ignore)

или

text.bind("<Return>", lambda e: "break")

Кстати, если вы действительно хотите изменить поведение всего текста виджеты в вашем приложении, вот как использовать метод bind_class:

top.bind_class("Text", "<Return>", lambda e: None)

Но есть много причин, почему вы не должен этого делать. Например, это испортил весь день Вы хотите продлить заявку с каким-то классным компонентом пользовательского интерфейса вы скачал из сети. Лучше использовать Ваша собственная специализация Текстовый виджет, и сохранить привязки по умолчанию Tkinter нетронутый:

class MyText(Text):
    def __init__(self, master, **kw):
        apply(Text.__init__, (self, master), kw)
        self.bind("<Return>", lambda e: "break")
0 голосов
/ 30 июня 2011

Если вы говорите о текстовом виджете, из официальной документации о текстовом виджете :

"Левая и правая клавиши перемещают курсор вставки на один символ влево или вправо; они также очищают любые выделение в тексте ... Control-b и Control-F ведет себя так же, как левый и Правильно, соответственно. "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...