Python 2.7 / Windows: Как контролировать положение общих диалогов Tkinter? - PullRequest
6 голосов
/ 22 октября 2010

Python 2.7 под Windows: Как мы можем контролировать положение общих диалогов 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 голос
/ 05 марта 2011

Для окна сообщений Windows вы не можете.Он появляется в центре экрана, и это все.Однако диалоговое окно выбора файла и средство выбора цвета являются системными диалоговыми окнами, которым была предоставлена ​​оболочка Tk, чтобы пользователи могли видеть стандартные диалоговые окна на этой платформе.Если вы установите опцию -parent, то она будет передана обернутым окнам, и она будет центрироваться по указанному вами верхнему уровню.

В Tk:

toplevel .t
tk_chooseColor -parent .t

Как превратить это в TkinterЯ оставляю кого-то с некоторым опытом работы с Python.

Что касается их центрирования, член hwndOwner структуры CHOOSECOLOR всегда устанавливается в HWND для одного из ваших уровней Tk.Чтобы сделать его родительским по отношению к рабочему столу, вам нужно будет пропустить NULL, а Tk не позволит вам.Вы можете получить версию для Unix (lib / clrpick.tcl) и показать это вместо этого, но тогда это будет выглядеть странно на рабочем столе Windows.

...