我的Raspberry Pi 3中有2个.py脚本.Script1.py只是一个按钮脚本,Script2.py是主脚本。我想只在Script1中按下按钮运行Script2。
现在我知道之前已经问过这个Q.我已经阅读了他们的解决方案,但没有一个能为我工作。
我基本上想要将Script2作为模块运行。这样整个脚本也可以运行,我也可以从该脚本中获取变量。这就是我正在做的事情
Script1.py
Import Script2
Import Rpi.GPIO
if_button_is_pressed:
os.system("Script2.py")
是的,我也试过过execfile。不行。问题是,当我运行Script1时,Script2也会自动运行,而不必等待按下按钮。看起来像导入功能导入脚本并运行它。
我的下一步是这个
Import Rpi.GPIO
if_button_is_Pressed:
import Script2
这样运行正常,但仅限第一次执行。如果我插入while(True)循环,在导入并运行Script2之后,它将在下次运行。
Import Rpi.GPIO
while(True)
if_button_is_pressed:
import Script2
当我按下按钮时,Script2运行正常。然后当我再次按下按钮时,它不会运行Script2。只需跳过它然后转到下一个命令。
可能是什么问题?提前谢谢
答案 0 :(得分:0)
您可以尝试以下方式:
Import Rpi.GPIO
Import cv2
while(button_is_pressed):
import Script2
cv2.waitKey(0)
按下按钮时应该捕捉动作并使用此值进行检查。
cv2.waitKey()
是键盘绑定功能。它的参数是以毫秒为单位的时间。该函数等待任何键盘事件的指定毫秒。如果您在该时间内按任意键,程序将继续。如果为0,则无限期等待键击。它也可以设置为检测特定的键击,如果按下键a等,我们将在下面讨论。取自here。
答案 1 :(得分:0)
将通常在导入时运行的脚本2部分放入不接受任何参数的函数中。这可能是整个脚本。我们调用函数run
。
在脚本1中,像往常一样导入脚本2。现在导入过程中不会运行任何内容。使用script2.run()
回复按钮点击次数。
如果您仍然需要能够将脚本2作为脚本运行,请在其末尾添加以下行(在run
函数之外):
if __name__ == '__main__':
run()