TKinter tkFileDialog.askopenfilename总是落后于其他窗口

时间:2016-02-05 16:31:24

标签: python tkinter

我想创建一个简单的TKinter文件选择对话框,其中包含我将从其他脚本使用的功能,而不是更广泛的GUI。

我目前的代码是:

# 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最大化,它会在它背后打开,所以我必须尽量减少。

有一些与此相关的问题,但我无法获得任何建议的代码,所以如果这被视为重复的问题,请道歉。

2 个答案:

答案 0 :(得分:1)

只需在root.deiconify()

之后使用file_path = tkFileDialog.askopenfilename()即可

但在这里创建一个新的Tk是一个坏主意。

答案 1 :(得分: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)