2017-01-03 6 views
0

上で動作し、Script2.pyはメインスクリプトです。 Script2をScript1でボタンを押すだけで実行したい。だけでボタンのスクリプトである私は私のラズベリーパイ3 Script1.pyに2つの.pyスクリプトを持っているだけで宣言

今私は、このQは前に頼まれている知っています。私は彼らの解決策を読んだが、私のために働いているのは誰もいなかった。

私は基本的にモジュールとしてスクリプト2を実行したいです。スクリプト全体も実行されるので、そのスクリプトから変数を取得することもできます。これは私も

Import Script2 
Import Rpi.GPIO 

if_button_is_pressed: 
os.system("Script2.py") 

はい、私が試してみましたexecfileをScript1.py

をやっているものです。動作しません。問題は、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) 

:あなたが好きなものを試みることができる事前

+0

あなたのコードを修正してください。 –

答えて

0

にありがとうございました。

cv2.waitKey()はキーボードバインディング機能です。引数はミリ秒単位の時間です。この関数は、キーボードイベントに対して指定されたミリ秒間待ちます。その時間にいずれかのキーを押すと、プログラムは続行されます。 0を渡すと、キーストロークが無期限に待機します。キーaが押された場合など、特定のキーストロークを検出するように設定することもできます。 hereから取られます。

+0

それを試してみてください。動作しません。同じ出力。 Script2をインポートし、初めて実行します。スクリプト2以降は実行されません。 –

+0

@ShantanuJagtap 'cv2'モジュールをインポートし、 'cv2.waitKey(0)'を使ってみてください。 – zinon

0

通常はインポート時に実行されるスクリプト2の部分を、引数を受け入れない関数に入れます。これはおそらくスクリプト全体です。関数runを呼び出してみましょう。

スクリプト1では、通常どおりスクリプト2をインポートします。今はインポート中に何も実行されません。 script2.run()でボタンのクリックに応答します。

あなたはまだそれの終わり(run関数の外)に次の行を追加し、スクリプトとしてスクリプト2を実行できるようにする必要がある場合:

if __name__ == '__main__': 
    run() 
関連する問題