6

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()

谢谢你,马尔科姆

4

1 回答 1

1

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

在 Tk 中:

toplevel .t
tk_chooseColor -parent .t

你如何把它变成 Tkinter 我留给有一些 Python 经验的人。

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

于 2011-03-05T11:07:11.487 回答