Я думаю, что сохраненный базой данных короткий период локаута для сделанного отчета (1-5 минут) является единственным способом обработать это. Каждый userid
в Вашей базе данных содержит timeOfLastFailedLogin
и numberOfFailedAttempts
. Когда numbeOfFailedAttempts > X
Вы локаут в течение нескольких минут.
Это означает, что Вы блокируете userid
рассматриваемый в течение некоторого времени, но не постоянно. Это также означает обновление базы данных для каждой попытки входа в систему (если это не заблокировано, конечно), который может вызывать другие проблемы.
существует по крайней мере одна целая страна, NAT'ed в Азии, таким образом, IP не может использоваться ни для чего.
Это очень легко сделать с помощью 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 ()
, чтобы эта привязка влияла на все текстовые виджеты.
Не уверен насчет TKinter, но с PyQt можно подключить функцию к сигналу изменения вкладки, излучаемому полем вкладки (сигнал также несет значение типа int). Но, насколько мне известно, Qt неплохо справляется с правильными вещами без его указания.
Обход фокуса можно настроить, обычно это позволяет диспетчеру X windows обрабатывать его (фокус следует за мышью или щелчком). Согласно руководству , должна быть возможность привязать
событие к событию нажатия клавиши для нажатий табуляции и в таких случаях запускать событие focusNext
. 1118598]