Python 2.7/Windows:如何控制Tkinter常用对话框的位置?

Mal*_*olm 6 python windows tkinter ttk

Windows下的Python 2.7:我们如何控制Tkinter常用对话框的位置?

这是我们发现的:

  • 某些常见对话框始终相对于其父窗口打开
  • 某些常见对话框始终以用户桌面为中心打开
  • 所有常见对话框似乎都忽略了可选的parent =参数

问题:

  • 我们如何强制对话框相对于其父窗口打开?
  • 我们如何强制以用户桌面为中心打开对话框?

背景:

import tkColorChooser as colorchooser
import tkFileDialog as filedialog
import tkMessageBox as messagebox

; # always open up relative to parent windows
fileOpen   = filedialog.askopenfilename()
fileOpens  = filedialog.askopenfilenames()
fileSaveAs = filedialog.asksaveasfilename()
color      = colorchooser.askcolor()

; # always open up centered on desktop
folderOpen = filedialog.askdirectory()
messagebox.askquestion()
Run Code Online (Sandbox Code Playgroud)

谢谢你,马尔科姆

pat*_*yts 1

对于 Windows 消息框则不能。它出现在屏幕中央,就是这样。但是,文件选择对话框和颜色选择器是已被赋予 Tk 包装器的系统对话框,以便用户可以在此平台上看到库存对话框。如果您设置 -parent 选项,那么它将传递到包装的窗口,并且它将在您指定的顶层上居中。

在 Tk 中:

toplevel .t
tk_chooseColor -parent .t
Run Code Online (Sandbox Code Playgroud)

如何将其转变为 Tkinter 我将留给有一些 Python 经验的人来解决。

至于居中这些,CHOOSECOLOR 结构的 hwndOwner 成员始终设置为 Tk 顶层之一的 HWND。要让它成为桌面的父级,您需要在那里传递 NULL,而 Tk 不允许您这样做。您可以获取 unix 版本 (lib/clrpick.tcl) 并显示它,但它在 Windows 桌面上看起来会很奇怪。