我正在用python开发一个秒表类型的程序,我想知道如何检测是否按下了一个键(例如p表示暂停,s表示停止),而我不希望它像raw_input这样等待用户输入,然后继续执行。有人知道如何在while循环中执行此操作吗?
另外,我想做这个跨平台的,但是如果那不可能,那么我的主要开发目标是linux
对于那些在窗户上努力寻找可行答案的人,我的是:pynput
from pynput.keyboard import Key, Listener def on_press(key): print('{0} pressed'.format( key)) def on_release(key): print('{0} release'.format( key)) if key == Key.esc: # Stop listener return False # Collect events until released with Listener( on_press=on_press, on_release=on_release) as listener: listener.join()
上面的功能将打印你按下的任何键,并在你释放“ esc”键时开始执行操作。键盘文档在这里用于更多变化的用法。
马库斯·冯·布罗迪(Markus von Broady)强调了一个潜在的问题,即:这个答案并不需要你在当前窗口中激活此脚本,Windows的解决方案是:
(Markus von Broady)
from win32gui import GetWindowText, GetForegroundWindow current_window = (GetWindowText(GetForegroundWindow())) desired_window_name = "Stopwatch" #Whatever the name of your window should be #Infinite loops are dangerous. while True: #Don't rely on this line of code too much and make sure to adapt this to your project. if current_window == desired_window_name: with Listener( on_press=on_press, on_release=on_release) as listener: listener.join()