我的树莓派3中有两个.py脚本,Script1.py只是一个按钮脚本,Script2.py是主脚本。我只想在Script1中按下按钮时运行Script2。
现在我知道这个问题已经被问过了。我读过他们的解决方案,但没有一个对我有效。
实际上,我希望将Script2作为一个模块来运行。因此整个脚本也会运行,我还可以从该脚本中获取变量。这就是我正在做的事情
Script1.py
Import Script2
Import Rpi.GPIO
if_button_is_pressed:
os.system("Script2.py")
是的,我也尝试过execfile。不起作用。问题是,当我运行Script1时,Script2也会自动运行,而不需要等待按下按钮。似乎Import函数也会导入脚本并运行它。
我的下一步行动是这样的
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。跳过它,转到下一个命令。
可能的问题是什么?提前谢谢你
发布于 2017-01-03 07:12:48
您可以尝试如下所示:
Import Rpi.GPIO
Import cv2
while(button_is_pressed):
import Script2
cv2.waitKey(0)
您应该在按钮被按下时捕获操作,并使用此值进行检查。
cv2.waitKey()
是一个键盘绑定函数。它的参数是以毫秒为单位的时间。该函数等待指定的毫秒以等待任何键盘事件。如果你在这段时间内按任意键,程序就会继续。如果传递0,它将无限期地等待击键。它还可以设置为检测特定的按键敲击,例如,是否按下了键a等,这将在下面讨论。摘自here。
发布于 2017-01-03 08:54:10
将脚本2中通常在导入时运行的部分放入不接受任何参数的函数中。这可能是整个脚本。让我们将该函数称为run
。
在脚本1中,照常导入脚本2。现在,在导入期间将不会运行任何内容。使用script2.run()
响应按钮点击。
如果您仍然需要能够将脚本2作为脚本运行,请在脚本末尾添加以下行(在run
函数之外):
if __name__ == '__main__':
run()
https://stackoverflow.com/questions/41438176
复制