Python2.7/Windows:如何控制Tkinter公共对话框的位置?

Python2.7/Windows:如何控制Tkinter公共对话框的位置?,python,windows,tkinter,ttk,Python,Windows,Tkinter,Ttk,Windows下的Python 2.7:我们如何控制Tkinter公共对话框的位置 以下是我们的发现: 某些常用对话框总是相对于其父窗口打开 某些常见对话框始终以用户桌面为中心打开 所有常用对话框都会忽略可选的parent=参数 问题: 如何强制对话框相对于其父窗口打开 我们如何强制以用户桌面为中心打开对话框 背景: import tkColorChooser as colorchooser import tkFileDialog as filedialog import tkMessa

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

对于Windows messagebox,您不能。它出现在屏幕中央,就是这样。但是,“文件选择”对话框和“颜色选择器”是系统对话框,它们被提供了一个Tk包装器,这样用户就可以在这个平台上看到股票对话框。如果您设置了-parent选项,那么这将传递到包装窗口,它将在指定的顶层上居中

在传统知识中:

如何将其转化为Tkinter,我将留给有Python经验的人

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

toplevel .t
tk_chooseColor -parent .t