Closed songyang1995 closed 2 years ago
import keyboard def func(): # do something print("something") remove_func1 = keyboard.add_hotkey("o", func) remove_func2 = keyboard.add_hotkey("p", func) # current keyboard._hotkeys # {'o': <function keyboard.add_hotkey.<locals>.remove_()>, # <function keyboard.add_hotkey.<locals>.remove_()>: <function keyboard.add_hotkey.<locals>.remove_()>, # <function __main__.func()>: <function keyboard.add_hotkey.<locals>.remove_()>, # !!Notice here # 'p': <function keyboard.add_hotkey.<locals>.remove_()>, # <function keyboard.add_hotkey.<locals>.remove_()>: <function keyboard.add_hotkey.<locals>.remove_()>} remove_func1() # or keyboard.remove_hotkey(remove_func1) or keyboard.remove_hotkey("o") # current keyboard._hotkeys # {'p': <function keyboard.add_hotkey.<locals>.remove_()>, # <function keyboard.add_hotkey.<locals>.remove_()>: <function keyboard.add_hotkey.<locals>.remove_()>} # !!this step raise KeyError remove_func2() # or keyboard.remove_hotkey(remove_func2) or keyboard.remove_hotkey("p") Traceback (most recent call last): File "D:\dev\python3.9\lib\site-packages\IPython\core\interactiveshell.py", line 3553, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "<ipython-input-6-5fdece594f28>", line 1, in <module> remove_func2() # or keyboard.remove_hotkey(remove_func2) or keyboard.remove_hotkey("p") File "D:\dev\python3.9\lib\site-packages\keyboard\__init__.py", line 655, in remove_ del _hotkeys[callback] KeyError: <function func at 0x0000018C72CEFC18>
seems using dict.pop(key, None) to replace del dict[key] might helps
dict.pop(key, None)
del dict[key]
error occurs on removing hotkey while binding one function to two keys
seems using
dict.pop(key, None)
to replacedel dict[key]
might helps