【问题标题】:Python Blessed Library Missing Key Press EventsPython Blessed Library 缺少按键事件
【发布时间】:2020-08-21 09:04:53
【问题描述】:

blessed Python 库看起来非常适合制作控制台应用程序,但我在使用键盘功能时遇到了问题。在下面的代码中,仅检测到每秒一次的按键。请问这是为什么?

我使用的是带有 Python 3.8 的 Windows 10。

from blessed import Terminal


term = Terminal()
print(f"{term.home}{term.black_on_skyblue}{term.clear}")

    
with term.cbreak(), term.hidden_cursor():
    while term.inkey() != 'q':
        inp = term.inkey()
        if inp.name == "KEY_LEFT":
            print("You pressed left")

【问题讨论】:

  • 嘿伙计,您能对我的回答提供一些反馈吗?它解决了你的问题吗?
  • 好吧,它引导我找到解决方案,但实际问题是重复调用term.inkey(),这应该只发生一次。最初将inp 设置为"" 不起作用,因为None 没有属性name。所以我使用while True 循环进行了重组。非常感谢,但您的答案并不完全正确,因为第一次按键仍然被忽略。
  • 很高兴您设法解决了这个问题,但我相信我的回答仍然正确。您的代码执行您声称的操作,仅检测到每秒一次的按键操作。但是,如果您将其替换为我的代码,实际上会检测到每个按键,从而解决了最初的问题。
  • 不完全如此——错过了第一次按键,这是一个相当严重的问题。

标签: python console-application keyboard-events blessed


【解决方案1】:

将 term.inkey() 移到内部 while 循环之外,以便它首先侦听键:

from blessed import Terminal
      
term = Terminal()
print(f"{term.home}{term.black_on_skyblue}{term.clear}")
    
        
with term.cbreak(), term.hidden_cursor():
    inp = term.inkey()
    while term.inkey() != 'q':
        if inp.name == "KEY_LEFT":
            print("You pressed left")

【讨论】:

  • 这解决了你的问题@Robin Andrews 吗?
猜你喜欢
  • 1970-01-01
  • 2021-03-20
  • 1970-01-01
  • 2018-06-22
  • 1970-01-01
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多