前提・生じている問題
windowsのデスクトップアプリをPythonで作成しており、その中で wxPython の FileDialog を使っています。
「ファイルを開く」ボタンを押下すると、ダイアログが開く仕様です。
この際、開いたダイアログは画面の最前面に表示されてほしいです。
しかし、アプリ起動後、「ファイルを開く」ボタンを押下すると、ダイアログは最背面に表示されてしまいます。
一方で、開いたダイアログをタスクバーで選択して最前面に表示した後、一度ダイアログを閉じ、再度「ファイルを開く」ボタンを押下すると、今度は最前面に表示されるという状況です。
実現したいこと
アプリ起動後、1回目からダイアログが最前面に表示されてほしいです。
該当のソースコード
Python(run.py)
1import eel 2import wx 3 4 5@eel.expose 6def get_file_path(wildcard="*"): 7 app = wx.App() 8 style = wx.FD_OPEN | wx.FD_FILE_MUST_EXIST 9 dialog = wx.FileDialog(None, 'Open', wildcard=wildcard, style=style) 10 11 if dialog.ShowModal() == wx.ID_OK: 12 path = dialog.GetPath() 13 else: 14 path = None 15 dialog.Destroy() 16 17 return path 18 19 20eel.init("static") 21eel.start("main.html")
JS(static/js/main.js)
1async function getFilePath() { 2 let path = await eel.get_file_path()(); 3 document.getElementById("file-path").innerHTML = path; 4}
HTML(static/main.html)
1<html> 2<head> 3 <meta charset="UTF-8"> 4 <title>Pythonアプリ</title> 5</head> 6<body> 7 <section> 8 <button onclick="getFilePath()">ファイルを開く</button> 9 <p id="file-path"></p> 10 </section> 11 <script type="text/javascript" src="/eel.js"></script> 12 <script type="text/javascript" src="./js/main.js"></script> 13</body> 14</html>
試したこと
style の最初や最後に wx.STAY_ON_TOP を付けてみましたが、うまく動作しませんでした。
FileDialog, ShowModal ではなく、Frame, Show で試したときはうまく動作したため、書き方が間違っているわけではないと思うのですが、、、FileDialog との併用はできない等あるのでしょうか。
補足情報(FW/ツールのバージョンなど)
環境は以下の通りです。
・Windows 10
・Python 3.10.7
・wxPython 4.2.0
・Eel 0.14.0
以上、よろしくお願いいたします。