2016-02-05 119 views
2

我想创建一个简单的TKinter文件选择对话框,其中包含一个函数,我将从其他脚本使用而不使用更宽的GUI。TKinter tkFileDialog.askopenfilename始终在其他窗口后面

我当前的代码是:

# Select a single file and return the full path as a string 
def select_file(data_dir): 

    chdir(data_dir) 

    root = Tkinter.Tk() 
    root.withdraw() 

    file_path = tkFileDialog.askopenfilename() 

    return file_path 

当我运行此文件对话框始终落后于其他窗口。如果我将Spyder最大化,它会在后面打开,所以我必须尽量减少。

有几个问题与此有关,但我一直无法得到任何建议的代码工作,所以道歉,如果这被视为一个重复的问题。

+0

你可能想尝试_not_撤回根窗口。相反,使用'geometry'将其从屏幕上移开。我从来没有必要尝试这个,但看起来问题可能至少部分与您已经撤销根窗口的事实有关。 –

回答

1

只要有后file_path = tkFileDialog.askopenfilename()

使用root.deiconify()但它是一个坏主意,在这里创建一个新的Tk

+0

在这个和不要求root.withdraw()我仍然没有窗口出现在顶部。删除root.withdraw()具有离开工具栏图标的附带好处,所以您至少可以最大化对话框而无需最小化Spyder。 – BMichell

0

使用root.focus_force()使根窗口顶部和fileDialog也应该是在最前面:

from Tkinter import * 
import tkFileDialog 

def select_file(data_dir): 
    root = Tk() 
    root.withdraw() 
    root.focus_force() 

    return tkFileDialog.askopenfilename(parent=root, initialdir=data_dir) 



select_file(data_dir) 
+1

嗨 - 与Spyder最大化对话仍然打开它后面。 – BMichell