前提・実現したいこと
# 実行環境 python 3.7.3 eel 0.14.0
eelで開いたchromeウィンドウを閉じたときにprint('end')を出力し、pythonアプリも終了したい
発生している問題・エラーメッセージ
pythonアプリを実行すると正常にeelが実行され、htmlが問題なく表示される。
しかし表示されているchromeウィンドウを閉じた時、本来は設定したclose_callbackの実行になるはずが、無反応。
print('end')も出力されず、メインのPythonアプリも終了しない。
上記の状態で、再度pythonアプリを実行すると下記エラーMSGが表示されたあと、chromeウィンドウにてhtmlが表示される。
Traceback (most recent call last): File "cathand.py", line 75, in <module> EelDefort("1280","720","main.html").eel_start_window() File "cathand.py", line 70, in eel_start_window eel.start(self.html,size=eel_size,options=eel_options,suppress_error=True) File "/home/user/.local/lib/python3.7/site-packages/eel/__init__.py", line 180, in start run_lambda() File "/home/user/.local/lib/python3.7/site-packages/eel/__init__.py", line 176, in run_lambda app=app) File "/home/user/.local/lib/python3.7/site-packages/bottle.py", line 3137, in run server.run(app) File "/home/user/.local/lib/python3.7/site-packages/bottle_websocket/server.py", line 17, in run server.serve_forever() File "/home/user/.local/lib/python3.7/site-packages/gevent/baseserver.py", line 398, in serve_forever self.start() File "/home/user/.local/lib/python3.7/site-packages/gevent/baseserver.py", line 336, in start self.init_socket() File "/home/user/.local/lib/python3.7/site-packages/gevent/pywsgi.py", line 1545, in init_socket StreamServer.init_socket(self) File "/home/user/.local/lib/python3.7/site-packages/gevent/server.py", line 180, in init_socket self.socket = self.get_listener(self.address, self.backlog, self.family) File "/home/user/.local/lib/python3.7/site-packages/gevent/server.py", line 192, in get_listener return _tcp_listener(address, backlog=backlog, reuse_addr=cls.reuse_addr, family=family) File "/home/user/.local/lib/python3.7/site-packages/gevent/server.py", line 288, in _tcp_listener sock.bind(address) File "/home/user/.local/lib/python3.7/site-packages/gevent/_socketcommon.py", line 563, in bind return self._sock.bind(address) OSError: [Errno 98] Address already in use: ('localhost', 8080)
該当のソースコード
ディレクトリ構造は下記となっている
~/python/main.py ~/python/web/main.html
main.pyのコードは下記となっている
python
1#! /usr/bin/env python 2# -*- coding: utf-8 -*- 3import eel 4import sys 5 6def close_window(arg1, arg2): 7 print('end') 8 sys.exit(0) 9 10class EelDefort: 11 def __init__(self,html): 12 self.html = html 13 def eel_start_window(self): 14 eel.init("web") 15 eel_options = { 16 "mode": "chrome", 17 "port": 8080, 18 "close_callback": close_window 19 } 20 eel.start(self.html,options=eel_options,suppress_error=True) 21 22if __name__ == "__main__": 23 EelDefort("main.html").eel_start_window()
main.htmlのコードは下記となっている
html
1<html> 2 <head> 3 <meta charset="UTF-8"> 4 <title>Eel</title> 5 </head> 6 <body> 7 Hello World!! 8 </body> 9</html>
試したこと
①eel_optionsの"close_callback"を削除し、下記コードに変更するが、変化なし
Before
1〜省略〜 2 3eel.start(self.html,options=eel_options,suppress_error=True) 4 5〜省略〜
After
1〜省略〜 2 3eel.start(self.html,close_callback=close_window,options=eel_options,suppress_error=True) 4 5〜省略〜
②close_callback実行中に検出されたエラーを出力するために下記コードへ変更するが、エラー表示されず、変化なし
Before
1〜省略〜 2 3if __name__ == "__main__": 4 EelDefort("main.html").eel_start_window()
After
1〜省略〜 2 3if __name__ == "__main__": 4 try: 5 EelDefort("main.html").eel_start_window() 6 except: 7 print('Error')
③python 2.7.16 {eel >> 0.12.4} で実行しても変化なし
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/07 02:17