Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 25, 2009 18:34:57

AndreySCB
От:
Зарегистрирован: 2009-12-25
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Не перехватить нажатие клавиатуры в русской раскладке.

Доброго времени суток!
Занимаюсь Питоном совсем недавно. ООП и прочие тонкости программирования для меня темный лес… Тем не менее решил создать визуальное приложение. Проблема, с которой я столкнулся - не получается запрет ввода букв с клавиатуры в 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()



Офлайн

#2 Дек. 26, 2009 16:28:05

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Не перехватить нажатие клавиатуры в русской раскладке.

1. Это потому что вы забиндено событие KeyRelease, то есть оно срабатывает после отпускания клавиши, когда символ уже напечатался.
2. simvol=event.char.decode('utf-8')

P.S. и не забудь проверить len(simvol) перед ord (if not simvol:return)
P.P.S. Для подобных тем есть раздел gui



Отредактировано (Дек. 26, 2009 16:30:52)

Офлайн

#3 Дек. 26, 2009 22:50:09

AndreySCB
От:
Зарегистрирован: 2009-12-25
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Не перехватить нажатие клавиатуры в русской раскладке.

Большое спасибо за помощь !!!



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version