首页 > 解决方案 > 用键盘循环控制python的最佳方法?

问题描述

刚接触python,想为树莓派写一个应用程序,但想先在我的电脑上开发它而不需要组装所有的按钮,所以我想用键盘代替按钮就行了。但我似乎找不到一个好的解决方案来循环脚本并同时观察键盘输入。

具体来说,我正在尝试运行一个检查按钮状态的循环。如果任何按钮亮起,它将打开共享设备。如果该按钮随后熄灭,它将在一段时间后关闭共享设备,除非任何其他按钮处于打开状态。但是,如果在按钮熄灭的时间段内,设备没有关机,另一个按钮亮起,设备不会关机。

我认为使用键盘和数字 1-8 来开发我将连接到 Pi 的 8 个按钮会更容易。

如果我使用

x = input()

脚本停止并等待输入,但我需要它继续在后台运行。

所以我尝试使用键盘模块

import keyboard
import time

while True: #   
    try:
        if keyboard.is_pressed('q'): #
            print("you pressed q")
    except:
        print("no key")
    currenttime = time.time()
    print (f'the new time is {currenttime}' )
    time.sleep(1)

但它有时只接受键盘输入。就像它在睡觉时不一样,我用它作为脚本是否忙于做其他事情的例子。

我发现这个代码四处搜索

from pynput import keyboard
def on_press(key):
    try:
        print('alphanumeric key {0} pressed'.format(
            key.char))
    except AttributeError:
        print('special key {0} pressed'.format(
            key))

def on_release(key):
    print('{0} released'.format(
        key))
    if key == keyboard.Key.esc:
        # Stop listener
        return False

# Collect events until released
with keyboard.Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()

除了安全问题之外,它还可以抓取键盘输入,但我不知道将循环放在哪里。

我也玩过 tkinter,但由于我没有尝试构建 GUI,这似乎不是正确的路径。

标签: pythontkinterraspberry-pikeyboardpynput

解决方案



推荐阅读