Найти - Пользователи
Полная версия: Не перехватить нажатие клавиатуры в русской раскладке.
Начало » Python для новичков » Не перехватить нажатие клавиатуры в русской раскладке.
1
AndreySCB
Доброго времени суток!
Занимаюсь Питоном совсем недавно. ООП и прочие тонкости программирования для меня темный лес… Тем не менее решил создать визуальное приложение. Проблема, с которой я столкнулся - не получается запрет ввода букв с клавиатуры в Entry. Причем:
1. При нажатии клавиш, все таки буквы кратковременно появляются в Entry.
2. В русской раскладке не определяется ASCII (это видно при выводе результатов в Label). В результате чего запрет ввода букв
не осуществляется.


#-*-coding:utf-8-*-
from Tkinter import*

def procedura(event):
simvol=event.char
if ord(simvol)<48:
txt1.delete(0,END)
lbl1.configure(text=ord(simvol))
elif ord(simvol)>57:
txt1.delete(0,END)
lbl1.configure(text=ord(simvol))
else:
lbl1.configure(text=ord(simvol))


form=Tk()
txt1=Entry(form)
txt1.bind(“<KeyRelease>”,procedura)
txt1.pack()
lbl1=Label(form)
lbl1.pack()
form.mainloop()
igor.kaist
1. Это потому что вы забиндено событие KeyRelease, то есть оно срабатывает после отпускания клавиши, когда символ уже напечатался.
2. simvol=event.char.decode('utf-8')

P.S. и не забудь проверить len(simvol) перед ord (if not simvol:return)
P.P.S. Для подобных тем есть раздел gui
AndreySCB
Большое спасибо за помощь !!!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB