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

7

我写了一个简短的脚本来查找和保存特定的文件。我使用下面这行代码来选择保存位置:

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

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

1个回答

5
在Windows系统中,似乎使用了FolderBrowserDialog函数,但它不能轻松地改变大小,尽管可能需要一些努力才能改变其大小。

可以在这里找到一些线索,可以使用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约定,这也不好...

我开始怀疑在这里使用wxPython而不是Tkinter会是一个更好(更简单)的解决方案。 - bigcat42
2
@bigcat42:TKinter的主要优点是1)简单性,2)速度,3)它可以与默认安装一起使用...如果您想要一个大而复杂的GUI,则可能不是最佳选择(尽管它可能的)。请注意,如果它们不重新实现此对话框,wxPython或任何其他工具包也将遇到相同的问题。 - Martin Tournoij

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接