我有一个应用程序,我希望每当用户按下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

但是它只是阻塞在那里,如果我有更多代码,则只有当while中断时它才会运行。我也不能使用tkinter!

是否只有按该键才能运行?没有循环。

最佳答案

您可以执行的一种方法是创建一个新线程来运行 key 检测器。这是一个例子:

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模块,则创建新线程将使该模块无法正常工作。单挑。 :)

希望对您有所帮助!

关于keyboard - Python-检测按键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18257522/

10-12 00:29
查看更多