この辺りを見たり
Introduction | Flet
こちらのIssuesを見たりしているのですが、
Issues · flet-dev/flet · GitHub
見つからずに困っています。(見落としの可能性あり)
テスト用にこの様なものを作りました。
(Fusion360APIと違い、素のpythonは実行するファイルの
切り替えが出来て楽ですね)
#python import flet as ft def main(page: ft.Page): set_page(page) page.add( ft.ElevatedButton( text='押すと終了', on_click=lambda e: page.window_destroy() ) ) def set_page(page: ft.Page): ''' 画面全体の初期設定 ''' def window_event(e): # ウィンドウ操作に対してのイベント # webでは発生しないみたい print(e.data) def on_disconnect( _: ft.ControlEvent): # これはweb print("Hello from on_disconnect") def on_connect( _: ft.ControlEvent): # これはweb print("Hello from on_connect") def on_close( _: ft.ControlEvent): # これは 分からない print("Hello from on_close") page.title = "test" page.theme_mode = ft.ThemeMode.DARK page.horizontal_alignment = ft.CrossAxisAlignment.CENTER page.window_width = 300 page.window_height = 200 page.window_left = 100 page.window_top = 400 # page.window_prevent_close = True page.on_window_event = window_event page.on_disconnect = on_disconnect page.on_connect = on_connect page.on_close = on_close page.update() if __name__ == '__main__': ''' エントリーポイント ''' ft.app(target = main) # ft.app(target=main, view=ft.WEB_BROWSER)
デスクトップアプリとして起動します。
こんな感じです。終了ボタンしかないです・・・。
ダイアログを動かしたり、サイズを変えたり、フォーカス失ったり
取得したり・・・すると、VSCodeのターミナルにチョロチョロ文字を
出力しています。欲しいのは "close"。
右上のXをクリックしても、 "close" は出ません。
page.window_prevent_close = True #ここ page.on_window_event = window_event page.on_disconnect = on_disconnect page.on_connect = on_connect page.on_close = on_close
"page.window_prevent_close"をTrueにして、先程のXをクリックすると
"close" が出力されます。 が、アプリが終了しません。
"window_prevent_close"はそのような意味ですね・・・。
'押すと終了' ボタンをクリックします。
アプリは終了しますが、 "close" が出力されません・・・。
page.on_disconnectイベントを期待したのですが、こちらは
webアプリ終了時しかイベントが発生しませんでした。
終了時のイベントを取得したい理由は、次回の起動時の設定に
使う為(ウィンドウサイズや位置やその他モロモロ)情報を
取得して保存したいからです。
起動する度に、ウィンドウサイズを直したり、同じことを入力
したりするアプリやソフトってムカつきませんか?
終了時のイベント取得出来ないかな・・・。