Python 2.7/Windows:如何控制Tkinter常用对话框的位置?
在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()
谢谢,
Malcolm
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桌面上看起来就会很奇怪。