如何改变tkFileDialog.askdirectory的窗口大小?

时间:2014-02-04 16:32:15

标签: python tkinter

我写了一个简短的脚本来查找和保存某些文件。我使用以下行选择保存位置:

ask_dir = tkFileDialog.askdirectory(initialdir= os.path.dirname(sys.argv[0]))

然而,askdirectory窗口(至少在我的WinXP机器上)过小,并且不可调整大小。 Tkinter似乎没有任何明显的命令来增加这个窗口大小 - see link here。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

在Windows上,似乎使用了FolderBrowserDialog函数,它无法轻松调整 的大小,尽管可能需要付出一些努力才能调整大小。

一些线索can be found here,可以使用pywin32模块将此代码“翻译”为Python。

以下是调整窗口大小的一些基本代码,以说明这将如何工作:

import win32gui

win = win32gui.FindWindowEx(None, None, "NULL,"#32770", None)
win32gui.SetWindowPos(win, 0, 500, 500, 900, 900, 0)

您还需要a)获取当前位置,并使用该位置而不是硬编码值,并且b)调整窗口内的所有小部件(请参阅链接文章)。

问题:

  • 很难看
  • 我的窗口类总是设置为#32770(win7,64位),对我来说看起来不太方便......我没有调查原因。
  • askdirectory正在阻塞,因此您需要启动一个单独的线程,轮询窗口是否打开,然后调整大小。这不仅是丑陋的,用户还可以在调整大小之前看到旧窗口大小的“闪烁”。

我理解你的问题,“打开文件夹”对话框的可用性很差,但是增加尺寸似乎需要付出很大的努力。
用其他东西替换它可能是一种选择,虽然这会破坏操作系统的UI惯例,这也不好......