Измените фокус от одного текстового виджета до другого

Я думаю, что сохраненный базой данных короткий период локаута для сделанного отчета (1-5 минут) является единственным способом обработать это. Каждый userid в Вашей базе данных содержит timeOfLastFailedLogin и numberOfFailedAttempts. Когда numbeOfFailedAttempts > X Вы локаут в течение нескольких минут.

Это означает, что Вы блокируете userid рассматриваемый в течение некоторого времени, но не постоянно. Это также означает обновление базы данных для каждой попытки входа в систему (если это не заблокировано, конечно), который может вызывать другие проблемы.

существует по крайней мере одна целая страна, NAT'ed в Азии, таким образом, IP не может использоваться ни для чего.

11
задан eyllanesc 12 March 2018 в 03:32
поделиться

3 ответа

Это очень легко сделать с помощью Tkinter.

Чтобы это работало, должно произойти несколько вещей. Во-первых, вам нужно убедиться, что стандартное поведение не выполняется . То есть вы не хотите, чтобы вкладка одновременно вставляла вкладку и перемещала фокус на следующий виджет. По умолчанию события обрабатываются конкретным виджетом до того, как происходит стандартное поведение (обычно в привязках классов). Tk имеет простой встроенный механизм, чтобы предотвратить дальнейшую обработку событий.

Во-вторых, вам нужно убедиться, что вы направили фокус на соответствующий виджет. Имеется встроенная поддержка для определения следующего виджета.

Например:

def focus_next_window(event):
    event.widget.tk_focusNext().focus()
    return("break")

text_widget=Text(...)
text_widget.bind("<Tab>", focus_next_window)

Важные моменты об этом коде:

  • Метод tk_focusNext () возвращает следующий виджет на клавиатуре иерархия обхода.
  • метод focus () устанавливает фокус на этот виджет
  • , возвращая «break» , критично, поскольку он предотвращает срабатывание привязки класса. Именно эта привязка класса вставляет символ табуляции, который вам не нужен.

Если вам нужно такое поведение для всех текстовых виджетов в приложении, вы можете использовать метод bind_class () вместо bind () , чтобы эта привязка влияла на все текстовые виджеты.

19
ответ дан 3 December 2019 в 08:30
поделиться

Не уверен насчет TKinter, но с PyQt можно подключить функцию к сигналу изменения вкладки, излучаемому полем вкладки (сигнал также несет значение типа int). Но, насколько мне известно, Qt неплохо справляется с правильными вещами без его указания.

-2
ответ дан 3 December 2019 в 08:30
поделиться

Обход фокуса можно настроить, обычно это позволяет диспетчеру X windows обрабатывать его (фокус следует за мышью или щелчком). Согласно руководству , должна быть возможность привязать событие к событию нажатия клавиши для нажатий табуляции и в таких случаях запускать событие focusNext . 1118598]

-2
ответ дан 3 December 2019 в 08:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: