2016-09-02 3 views
0

У нас есть веб-приложение, разработанное с использованием Flask, которое работает на сервере Windows с клиентами, которые подключаются к нему. Теперь у нас есть прецедент, когда желательно, чтобы сервер и клиент были объединены на ноутбук, чтобы оба сервера и клиентский код выполнялись вместе и отображали его как родное приложение Windows.Использование флеш-приложения в качестве приложения Windows

В принципе, у нас теперь есть два требования, которые у нас не были: 1. Должен быть в состоянии запустить браузер из Python. 2. Должно быть возможно закрыть приложение Python (Flask) в окне браузера.

Мы преуспели в пункте 1. Пункт 2 остается неуловимым. Мы попытались завершить работу сервера werkzeug, но код Python продолжает работать. Ищу помощь у тех, кто знает.

+0

Значит, вы хотите обнаружить для любого браузера, если он успешно вышел? –

+0

Мы собираемся положить Chrome на ноутбук. – kc64

+0

Мы запускаем приложение python, оно запускает веб-службу Flask, запускает Chrome в режиме киоска, Chrome загружает веб-интерфейс, пользователь счастлив, пользователь заканчивает и нажимает кнопку закрытия браузера, 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 вы можете проверить имя окна.

Вы можете создать скрипт, который проверяет это в фоновом режиме и убивает ваше приложение Flask, если запрашиваемое окно браузера не открывается.

from pywinauto.findwindows import find_windows 
if not find_windows(best_match='YOURWINDOWNAMEHERE'): 
    # Do your kill 
Смежные вопросы