Python 3.x 导入外部py脚本仅在声明时运行

Python 3.x 导入外部py脚本仅在声明时运行,python-3.x,python-import,Python 3.x,Python Import,我的Raspberry Pi 3中有2.py脚本。Script1.py只是一个按钮脚本,Script2.py是主脚本。我只想在Script1中的按钮按下时运行Script2 现在我知道以前有人问过这个问题。我读过他们的解决方案,但没有一个是为我工作的 我基本上希望将Script2作为一个模块运行。所以整个脚本也可以运行,我也可以从脚本中获取变量。这就是我正在做的 脚本1.py Import Script2 Import Rpi.GPIO if_button_is_pressed: os.sy

我的Raspberry Pi 3中有2.py脚本。Script1.py只是一个按钮脚本,Script2.py是主脚本。我只想在Script1中的按钮按下时运行Script2

现在我知道以前有人问过这个问题。我读过他们的解决方案,但没有一个是为我工作的

我基本上希望将Script2作为一个模块运行。所以整个脚本也可以运行,我也可以从脚本中获取变量。这就是我正在做的

脚本1.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。跳过它,进入下一个命令


可能是什么问题?提前感谢您

您可以尝试以下方法:

Import Rpi.GPIO
Import cv2

while(button_is_pressed):
    import Script2
    cv2.waitKey(0)
您应该在按下按钮时捕捉该动作,并使用该值进行检查


cv2.waitKey()
是一种键盘绑定功能。它的参数是以毫秒为单位的时间。函数等待任何键盘事件的指定毫秒。如果在此期间按任意键,程序将继续。如果0被传递,它将无限期地等待键笔划。它还可以设置为检测特定的按键笔划,如按下a键等,我们将在下面讨论。取自。

将脚本2中通常在导入时运行的部分放入不接受参数的函数中。这可能是整个脚本。让我们调用函数
run

在脚本1中,像往常一样导入脚本2。现在,导入过程中将不会运行任何内容。使用
script2.run()
响应按钮单击

如果您仍然需要能够将脚本2作为脚本运行,请在其末尾添加以下行(在
run
函数之外):


试过了。不起作用。输出相同。导入Script2并首次运行良好。之后,脚本2无法运行。@ShantanuJagtap尝试导入“cv2”模块并使用
cv2.waitKey(0)
。请修复代码。
if __name__ == '__main__':
   run()