lora-scripts/mikazuki/utils/tk_window.py

57 lines
1.2 KiB
Python

import os
from mikazuki.log import log
try:
import tkinter
from tkinter.filedialog import askdirectory, askopenfilename
except ImportError:
tkinter = None
askdirectory = None
askopenfilename = None
log.warning("tkinter not found, file selector will not work.")
last_dir = ""
def tk_window():
window = tkinter.Tk()
window.wm_attributes('-topmost', 1)
window.withdraw()
def open_file_selector(
initialdir="",
title="Select a file",
filetypes="*") -> str:
global last_dir
if last_dir != "":
initialdir = last_dir
elif initialdir == "":
initialdir = os.getcwd()
try:
tk_window()
filename = askopenfilename(
initialdir=initialdir, title=title,
filetypes=filetypes
)
last_dir = os.path.dirname(filename)
return filename
except:
return ""
def open_directory_selector(initialdir) -> str:
global last_dir
if last_dir != "":
initialdir = last_dir
elif initialdir == "":
initialdir = os.getcwd()
try:
tk_window()
directory = askdirectory(
initialdir=initialdir
)
last_dir = directory
return directory
except:
return ""