2017-01-03 154 views
0

我在Raspberry Pi 3中有2个.py脚本3. Script1.py只是一个按钮脚本,Script2.py是主脚本。我想仅在Script1中的按钮上运行Script2。导入外部py脚本仅在声明时运行

现在我知道这个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 

这运行正常,但仅限于1日执行。如果我插入了一个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,它将无限期地等待键击。它也可以设置为检测特定的按键,例如,如果按下按键等,我们将在下面讨论。采取从here

+0

试过了。不起作用。相同的输出。导入Script2并首次运行良好。之后比Script2不运行。 –

+0

@ShantanuJagtap尝试导入'cv2'模块并使用'cv2.waitKey(0)'。 – zinon

0

将通常在导入时运行的脚本2部分放入不接受任何参数的函数中。这可能是整个脚本。我们称之为功能run

在脚本1中,像往常一样导入脚本2。现在在导入过程中不会有任何运行。通过script2.run()响应按钮点击。

如果您仍然需要能够运行脚本2作为一个脚本,在它的末尾添加以下行(外run功能):

if __name__ == '__main__': 
    run()