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

big*_*t42 5 python tkinter

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

ask_dir = tkFileDialog.askdirectory(initialdir= os.path.dirname(sys.argv[0]))
Run Code Online (Sandbox Code Playgroud)

但是,askdirectory窗口(至少在我的WinXP计算机上)过小,并且无法调整大小。Tkinter似乎没有任何明显的命令来增大此窗口的大小,请参见此处的链接。我怎样才能解决这个问题?

Mar*_*oij 5

在 Windows 上,FolderBrowserDialog似乎使用了该功能,但不能轻松调整大小,尽管可能可以通过一些努力来调整大小。

可以在此处找到一些线索,可以使用pywin32模块将此代码“翻译”为 Python 。

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

import win32gui

win = win32gui.FindWindowEx(None, None, "NULL,"#32770", None)
win32gui.SetWindowPos(win, 0, 500, 500, 900, 900, 0)
Run Code Online (Sandbox Code Playgroud)

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

问题:

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

我了解您的问题,并且“打开文件夹”对话框的可用性很差,但似乎需要付出大量努力才能增加大小。
用其他东西替换它可能是一种选择,尽管这会破坏操作系统的 UI 约定,这也不好......

  • @bigcat42:TKinter 的主要优点是 1) 简单,2) 速度,3) 默认安装即可使用...可能的)。请注意,如果 wxPython 或任何其他工具包不重新实现此对话框,它们将遇到同样的问题。 (2认同)