2017-01-03 65 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()