2016-02-05 86 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

相關問題