2016-09-02 15 views
0

Flaskを使用して開発されたWebアプリケーションは、接続されたクライアントを持つWindowsサーバー上で動作します。サーバーとクライアントがラップトップに結合され、サーバーとクライアントのコードが一緒に実行され、ネイティブのWindowsアプリケーションとして表示されるようにするケースがあります。Flask WebアプリケーションをWindowsアプリケーションとして使用する

基本的には、これまでにない2つの要件があります。 1. Python内からブラウザを起動できる必要があります。 2.ブラウザのウィンドウを閉じてPython(Flask)アプリケーションを終了できる必要があります。

私たちはアイテム1に成功しました。アイテム2はまだ分かりません。 werkzeugサーバーを終了しようとしましたが、Pythonコードは実行し続けます。知っている人の助けを求める。

+0

正常に終了したブラウザを検出しますか? –

+0

ラップトップにChromeを搭載します。 – kc64

+0

私たちは、Pythonアプリケーションを実行し、それがフラスコのWebサービスを開始し、それはキオスクモードでChromeを起動し、クロムは、Web GUIをロードし、ユーザーは、ユーザーが終了幸せにあり、近隣にはブラウザウィンドウのボタンをクリックすると、Pythonの*は、サーバーを停止する必要があります終了します。 – kc64

答えて

0

ドキュメントをより完全に読んで、実装を試した後、目的を満たすために次のメインコードを見つけました。

from multiprocessing import Process, freeze_support 


def run_browser(): 
    import webbrowser 
    chrome = webbrowser.get(r'C:\\Program\ Files\ (x86)\\Google\\Chrome\\Application\\chrome.exe --window-size=500,500 --app=%s') 
    chrome.open('http://localhost:5000/gui') 

def run_app(): 
    from app import webapp 
    webapp.run() #debug=True) #, use_reloader=False) 

if __name__ == '__main__': 
    freeze_support() 

    a = Process(target=run_app) 
    a.daemon = True 
    a.start() 

    b = Process(target=run_browser) 
    b.start() 
    b.join() 
0

現在、私はここにWindowsクライアントを持っていないので、私が提案しているものを正確にテストすることはできません。

pywinautoを使用すると、ウィンドウの名前を確認できます。

あなたは、バックグラウンドでこれを確認し、要求されたブラウザのウィンドウが開いていないときに、あなたのフラスコのアプリケーションを殺すスクリプトを構築することができます。

from pywinauto.findwindows import find_windows 
if not find_windows(best_match='YOURWINDOWNAMEHERE'): 
    # Do your kill 
関連する問題