2010-10-22 17 views
6

Python 2.7 sous Windows: Comment contrôler la position des dialogues communs de Tkinter?Python 2.7/Windows: Comment contrôler la position des boîtes de dialogue communes de Tkinter?

Voici ce que nous avons découvert:

  • Certains dialogues communs toujours ouvrir par rapport à leur fenêtre parent
  • Certains dialogues communs toujours ouvrir centré sur le bureau de l'utilisateur
  • Toutes les boîtes de dialogue communes semblent ignorer le parent en option = paramètre

questions:

  • Comment forcer l'ouverture d'une boîte de dialogue par rapport à sa fenêtre parente?
  • Comment forcer l'ouverture d'une boîte de dialogue centrée sur le bureau de l'utilisateur?

Contexte:

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

Merci, Malcolm

Répondre

1

Pour le messagebox de Windows vous ne pouvez pas. Il apparaît au centre de l'écran et c'est tout. Cependant, la boîte de dialogue de sélection de fichier et le sélecteur de couleurs sont des boîtes de dialogue système auxquelles un wrapper Tk a été donné afin que les utilisateurs voient les boîtes de dialogue de stock sur cette plate-forme. Si vous définissez l'option -parent, celle-ci est transmise aux fenêtres enveloppées et elle se centre sur votre niveau supérieur désigné.

En Tk:

toplevel .t 
tk_chooseColor -parent .t

Comment transformer en Tkinter je laisse à quelqu'un avec une certaine expérience Python. En ce qui concerne le centrage, le membre hwndOwner de la structure CHOOSECOLOR est toujours défini sur HWND pour l'un de vos topsvels Tk. Pour le laisser parent sur le bureau, vous devez passer NULL et Tk ne vous le permet pas. Vous pouvez vous procurer la version unix (lib/clrpick.tcl) et la montrer à la place, mais elle apparaîtra bizarre sur un bureau Windows.