Обучение Python (72 частью серии)
Давайте изучать событие KeyPress в виджете ввода TKinter
Вчера мы сделали фиктивную программу входа в систему (менеджер паролей). Но это был пароль был скрыт. Данные пароля могут быть доступны только StorePassword ()
функция. Но Сегодня, как насчет секретной ловушки, доступной для хакеров, чтобы украсть пароли😈
Событие KeyPress.
Мы можем достичь этого, написав кусок кода в основную программу, которая сканирует все, что мы записываем в виджет ввода пароля, и печатаете его в командной строке. Это можно сделать с помощью события клавиши. E1.Bind («
Всякий раз, когда какая-либо клавиша нажата, то выполняется функция «Keypress».
Вот полный код
from tkinter import * spy=Tk() spy.geometry("300x200") spy.title("spyware") def keypress(event): try: print(ord(event.char),end=".") except: # for blank press pass e1=Entry(spy,show='*') e1.focus_set() e1.bind("",keypress) # mind the case of 'key'- k must be K e1.pack() spy.mainloop()
Так что происходит? Ну, фактическое действие происходит в окне оболочки.
Позвольте мне объяснить, что делает функцию KeyPress. Всякий раз, когда какая-либо клавиша нажата, выполняется функция клавиатуры. Эта функция сначала извлекает, какая клавиша нажата. Затем он преобразует ключ в значение ASCII и печатает его в командной оболочке, используя точку для разделения. Таким образом, можно обнаружить даже персонажи, такие как Backspace и ключ ввода ввода. Разбор этой строки, чтобы получить пароль – это кусок пирога для хакера
Код завернут в попытках, кроме предотвращения пустых ключевых прессов, которые приводит к ошибкам, как
Exception in Tkinter callback Traceback (most recent call last): File "C:\Users\aatma\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1884, in __call__ return self.func(*args) File "C:/Users/aatma/AppData/Local/Programs/Python/Python310/spy.py", line 6, in keypress print(ord(event.char),end=".") TypeError: ord() expected a character, but string of length 0 found
Давайте теперь будем парить код с нашим менеджером паролей и увидеть результаты.
import tkinter as tk # import the Tkinter module form=tk.Tk() # create the blank window. form.title("password manager") # set the title as password manager form.geometry('400x200') # set the default geometry of the window. TB1=tk.Entry(form, width = 20) # make an entry widget with 20 spaces for the username TB2=tk.Entry(form,show="*", width = 20) def keypress(event): try: print(ord(event.char),end=".") except: # for blank press pass TB2.bind("",keypress) # entry widget for password and hide the keys whenever pressed. # TB1 is for username, TB2 is for password TB1.pack() TB2.pack() # pack the widgets into 'form' label=tk.Label(form,text="") # make a label to display the username def show(): #function to be executed once the button is pressed. a=TB1.get() # get username b=TB2.get() # get password if(a!="" and b!=""): label.config(text="Welcome "+a+" to python GUI",fg="Green") # display the label storepassword(a,b) # store password and username else: label.config(text="Please enter a valid username and password.",fg="Red") # blank screens def storepassword(username, password): #//Some mechanism to store password// pass #stubbed button=tk.Button(form,text="Sign Up", command=show) # setup the button button.pack() label.pack() form.mainloop() show()
Так что друзья, которые были все на сегодня. Оставайтесь настроиться на обновления …..
Обучение Python (72 частью серии)
Оригинал: “https://dev.to/aatmaj/learning-python-intermediate-course-day-27-entry-keypress-event-5d15”