Форум сайта python.su
Возникла проблема с биндом.
Я хочу забиндить клавиши h,a,c,k, но прога выдаёт ошибку, help
root.bind_all("<KeyPress-h-a-c-k>", hack)
root.bind_all("<KeyPress-h-a-c-k>", hack) File "C:\Users\Fedy\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 1245, in bind return self._bind(('bind', self._w), sequence, func, add) File "C:\Users\Fedy\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 1200, in _bind self.tk.call(what + (sequence, cmd)) _tkinter.TclError: extra characters after detail in binding
Отредактировано Fedy1661 (Ноя. 25, 2017 15:15:54)
Офлайн
оно так работает только в случаях типа ctrl-alt-чтото_еще. Иначе нужно городить колхоз типа такого:
from tkinter import * SHORTCUT= [65, 83, 68] # сочетание хоткеев a-s-d stack = [] # стек где храним коды нажатых в данный момент клавиш def key_pressed(e): # добавляем в стек код клавиши при нажатии и проверям равен ли стек хоткею k_code = e.keycode if k_code not in stack: stack.append(k_code) if SHORTCUT == stack: # проверяется нажаты ли одновременно a-s-d # порядок нажатия учитывается, регистр и раскладка - нет. print('shortcut pressed') def key_released(e): # Удаляем из стека код клавиши если клавишу отпустили k_code = e.keycode if k_code in stack: stack.remove(k_code) root = Tk() root.bind("<KeyPress>", key_pressed) root.bind ("<KeyRelease>", key_released) root.mainloop()
[code python][/code]
Отредактировано PEHDOM (Ноя. 25, 2017 16:42:59)
Офлайн
PEHDOMСпасибооооооо)
root.bind(“<KeyPress>”, key_pressed)
root.bind (“<KeyRelease>”, key_released)
Офлайн