首页 > 解决方案 > 如何在python中运行程序时检查按钮是否被按下

问题描述

我想在 Python 中运行一个程序,同时还要检查是否有按钮(物理类型)被按下。该程序看起来像这样:

import stuff

a = True

def main():
        important stuff which takes about 10 seconds to complete

while True:
        if a == True:
                main() 
                #at the same time as running main(), I also want to check if a button
                #has been pressed. If so I want to set a to False

我可以在 main 完成后检查按钮是否被按下,但这意味着当 python 检查按钮是否被按下(或按住按钮)时,我必须在瞬间按下按钮。

如何让 pythonmain() 运行时检查按钮是否被按下?

标签: pythonpython-3.xpython-multithreading

解决方案


这是您可以尝试的方法。该main功能每秒打印一个数字,您可以通过键入“s”+ Enter 键来中断它:

import threading
import time

a = True

def main():
    for i in range(10):
        if a:
            time.sleep(1)
            print(i) 

def interrupt():
    global a # otherwise you can only read, and not modify "a" value globally
    if input("You can type 's' to stop :") == "s":
        print("interrupt !")
        a = False


t1 = threading.Thread(target=main)
t1.start()
interrupt()

推荐阅读