4kpt_III
Узнать, какая кнопка нажата можно через event.
Пытаюсь это сделать с помощью такого кода:
#!/usr/bin/python3
import tkinter as tk
def test_func(event):
print("Pressed",repr(event.char))
root=tk.Tk()
frame=tk.Frame(root,width=300,height=300)
frame.pack()
frame.bind('<KeyRelease>',test_func)
frame.focus_set()
root.mainloop()
В результате, ‘Contol-v’ дает
Pressed ‘'
Pressed ’м'
В винде получаю:
Exception in Tkinter callback
Traceback (most recent call last):
File “C:\Python33\lib\tkinter\__init__.py”, line 1489, in __call__
return self.func(*args)
File “tst100.pyw”, line 6, in test_func
print(“Pressed”,repr(event.char))
File “C:\Python33\lib\encodings\cp866.py”, line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)
UnicodeEncodeError: ‘charmap’ codec can't encode character ‘\xec’ in position 1:
character maps to <undefined>
Без repr также получаю ошибку. Т.е. еще надо следить за локалью.
Делаю chcp 65001 (меняет кодовую страницу на UTF-8), получаю ‘ñ’ при нажатии ‘м’. Сочетание ‘<Control-ñ>’ также не привязывается.
Но даже если я разберусь с локалью, как мне поймать именно ‘Control-м’, а не просто ‘м’?