【问题标题】:TKinter tkFileDialog.askopenfilename Always behind other windowsTKinter tkFileDialog.askopenfilename 总是在其他窗口后面
【发布时间】:2016-02-05 16:31:24
【问题描述】:

我想创建一个简单的 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 最大化,它会在它后面打开,所以我必须最小化。

有一些与此相关的问题,但我无法让任何建议的代码工作,因此如果这被视为重复问题,我们深表歉意。

【问题讨论】:

  • 您可能想尝试撤回根窗口。相反,使用geometry 将其移出屏幕。我从来不需要尝试这个,但问题似乎至少部分与您撤回根窗口的事实有关。
  • 我也有同样的问题。你曾经解决过这个问题吗?

标签: python tkinter


【解决方案1】:

只需要在file_path = tkFileDialog.askopenfilename()之后使用root.deiconify()

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

【讨论】:

  • 在此之间并且不要求 root.withdraw() 我仍然没有出现在顶部的窗口。删除 root.withdraw() 具有留下工具栏图标的附带好处,因此您至少可以最大化对话框而不最小化 Spyder。
【解决方案2】:

使用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)

【讨论】:

  • 嗨 - Spyder 最大化后对话框仍然打开。
猜你喜欢
  • 2015-04-03
  • 1970-01-01
  • 2014-03-25
  • 2015-09-25
  • 2011-10-01
  • 1970-01-01
  • 2013-06-22
  • 2016-07-14
  • 2013-04-29
相关资源
最近更新 更多