Альтернатива TK для получения диалога открытия файла (Spyder)

#python #tkinter #spyder

Вопрос:

Я пользователь MATLAB и пытаюсь найти что-то похожее на uigetfile.

Я использую Anaconda/Spyder, чтобы предоставить пользователю возможность выбора файла (через диалоговое окно). Я пробовал различные решения, предлагаемые здесь, но диалоговое окно всегда находится за Spyder (никогда не фокусируется). Я также попробовал «easygui», но результат тот же.

Есть какие-либо предложения (ниже приведен код)?

 def getfile():
    import tkinter as Tkinter, tkinter.filedialog as tkFileDialog    
    root = Tkinter.Tk()
    #root.withdraw()
    #root.focus_force()
    file_path = tkFileDialog.askopenfilename(parent=root,title='Pick a file')    
    #root.update()
    return file_path 

def getfile2():
    import easygui
    file_path = easygui.fileopenbox()
    return file_path 
 

Комментарии:

1. Просто идея, попробуйте добавить root.after(200, root.focus_force) непосредственно перед .askopenfilename(...)

2. Спасибо. Это отчасти помогло. Я отвечу на свой вопрос ниже.

Ответ №1:

Благодаря @TheLizzard, ниже приведено то, что работает:

 def getfile():
    import tkinter as Tkinter, tkinter.filedialog as tkFileDialog
    root = Tkinter.Tk()
    root.after(100, root.focus_force)
    root.after(200,root.withdraw)    
    file_path = tkFileDialog.askopenfilename(parent=root,title='Pick a file')    
    return file_path