Рубрики
Без рубрики

Обучение Python- промежуточный курс: день 27, событие входной клавиши

Давайте изучим событие KEYPRESS в вчерашнее ввода Tkinter в вчера, мы сделали фиктивные входа в систему … Tagged OnessingPutyPhon, Python, Учебник.

Обучение Python (72 частью серии)

Давайте изучать событие KeyPress в виджете ввода TKinter

Вчера мы сделали фиктивную программу входа в систему (менеджер паролей). Но это был пароль был скрыт. Данные пароля могут быть доступны только StorePassword () функция. Но Сегодня, как насчет секретной ловушки, доступной для хакеров, чтобы украсть пароли😈

Событие KeyPress.

Мы можем достичь этого, написав кусок кода в основную программу, которая сканирует все, что мы записываем в виджет ввода пароля, и печатаете его в командной строке. Это можно сделать с помощью события клавиши. E1.Bind («», KeyPress) Всякий раз, когда какая-либо клавиша нажата, то выполняется функция «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”