加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

键盘 – Python – 检测按键

发布时间:2020-12-16 21:49:51 所属栏目:Python 来源:网络整理
导读:我有一个应用程序,我希望每当用户按下RETURN / ENTER时它会转到带输入的def. 我正在使用此代码: while True: z = getch() # escape key to exit if ord(z) == 9: self.command() break if ord(z) == 27: print "Encerrando processo.." time.sleep(2) sys.e

我有一个应用程序,我希望每当用户按下RETURN / ENTER时它会转到带输入的def.

我正在使用此代码:

while True:
    z = getch()
    # escape key to exit
    if ord(z) == 9:
        self.command()
        break
    if ord(z) == 27:
        print "Encerrando processo.."
        time.sleep(2)
        sys.exit()
        break

但它只是阻塞那里,如果我有更多的代码,它将不会运行它,只有当时间被打破.我也不能使用tkinter!

是否只有按下键才能运行?没有循环.

最佳答案
您可以采用的方法之一是创建一个新线程来运行密钥检测器.这是一个例子:

import threading

class KeyEventThread(threading.Thread):
    def run(self):
        # your while-loop here

kethread = KeyEventThread()
kethread.start()

请注意,在调用线程的start()函数之前,while循环不会运行.此外,它不会自动重复该功能 – 您必须将代码包装在while循环中以便重复.

不要显式调用线程的run()函数,因为这会导致代码与所有其他代码一起运行,而不是在单独的线程中运行.您必须使用threading.Thread中定义的start()函数,以便它可以创建新线程.

另请注意:如果您计划使用atexit模块,则创建新线程将使该模块无法正常工作.只是一个单挑.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读