python - 用键盘循环控制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,这似乎不是正确的路径。
解决方案
推荐阅读
- c# - 将属性设置为值时禁用行选择数据网格 WPF
- android - 为什么我不能在 android studio 中使用 andengine 显示 admob 奖励视频广告?
- swift - HealthKit:与提供的锻炼相关的样本删除问题
- android - 如何在电子邮件意图中添加额外内容,例如:固定位置以及实时和日期
- python - 在报告在文本中找到位置的模型的准确性时,应该使用哪种相似性度量?
- c# - 泛型列表的函数重载
问题 - powerbi - 如何在power bi查询中比较两个日期
- php - com.android.volley.AuthFailureError 在发出 POST 请求以服务器为用户注册
- javascript - 为什么这个 response.end(callback) 被调用了两次?
- android - 使用 unity3d 创建的 Android apk 在某些手机上无法打开