I am developing modern-looking local app in Python with Eel and I want to open OS's default dialog to select directory. But I have found that Eel does not provide that.
I have tried:
- dialog from HTML/JS, but browser provides just dialog for file/s selection.
- local dialogs from other libraries, but they are really ugly and not using the default one, for example:
Tkinter (ttk is not that much better):
tkfilebrowser:
Anybody knows, how can I open OS's default directory selection via some simple lightweight library/eel? (at least on Linux-Ubuntu and Windows)
Or are there any other lightweight alternatives to eel, that would do that? I know about pywebview, but it is slower than eel and it is not that lightweight.
CodePudding user response:
I don't think there is any way to change how the tkinter
folder selection dialog looks. But you can use something like this (should work on Linux):
from subprocess import Popen, PIPE
from time import sleep
COMMAND = "zenity --file-selection --directory"
def ask_folder() -> str:
# Open a new process with the command
proc = Popen(COMMAND, shell=True, stdout=PIPE)
# Wait for the process to exit
while proc.poll() is None:
sleep(0.1)
# Read the stdout and return the result
stdout_text = proc.stdout.read()
directory = stdout_text.decode().strip("\n")
if directory == "":
return None
else:
return directory
folder = ask_folder()
print(f"Selected: \"{folder}\"")
If you change the COMMAND
, based on the OS, you should be able to get this to work on all OSes.