在python中检测按键?

发布于 2021-02-02 23:16:18

我正在用python开发一个秒表类型的程序,我想知道如何检测是否按下了一个键(例如p表示暂停,s表示停止),而我不希望它像raw_input这样等待用户输入,然后继续执行。有人知道如何在while循环中执行此操作吗?

另外,我想做这个跨平台的,但是如果那不可能,那么我的主要开发目标是linux

关注者
0
被浏览
97
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    对于那些在窗户上努力寻找可行答案的人,我的是: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的解决方案是:

    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()
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看