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

时间:2010-10-22 17:00:40

标签: python windows tkinter ttk

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

以下是我们发现的内容:

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

问题:

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

背景:

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

谢谢你, 马尔科姆

1 个答案:

答案 0 :(得分:1)

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

在Tk:

toplevel .t
tk_chooseColor -parent .t

如何将其转变为Tkinter我将留给具有一定Python经验的人。

至于这些中心,CHOOSECOLOR结构的hwndOwner成员总是设置为你的一个Tk toplevels的HWND。要让它在桌面上为父对象,你需要在那里传递NULL而Tk不允许你。您可以获取unix版本(lib / clrpick.tcl)并显示相反,但在Windows桌面上看起来会很奇怪。