2010-10-22 42 views
6

Python 2.7 en Windows: ¿Cómo podemos controlar la posición de los cuadros de diálogo comunes de Tkinter?Python 2.7/Windows: ¿Cómo controlar la posición de los cuadros de diálogo comunes de Tkinter?

Esto es lo que hemos descubierto:

  • Ciertos diálogos comunes siempre se abren con relación a su ventana padre
  • Ciertos diálogos comunes siempre se abren centrado en el escritorio del usuario
  • Todos los diálogos comunes parecen ignorar el padre opcional = parámetro

Preguntas:

  • ¿Cómo podemos forzar que un diálogo se abra en relación con su ventana principal?
  • ¿Cómo podemos forzar un cuadro de diálogo para abrir centrado en el escritorio del usuario?

Antecedentes:

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

Gracias, Malcolm

Respuesta

1

Para el cuadro de mensaje de Windows no se puede. Aparece en el centro de la pantalla y eso es todo. Sin embargo, el diálogo de selección de archivos y el selector de color son diálogos del sistema que tienen un contenedor Tk para que los usuarios vean los diálogos de stock en esta plataforma. Si configura la opción -parent, esto se pasa a las ventanas envueltas y se centrará en su nivel designado.

En Tk:

toplevel .t 
tk_chooseColor -parent .t

Cómo convertir eso en Tkinter lo dejo a alguien con alguna experiencia Python.

En cuanto a centrar estos elementos, el miembro hwndOwner de la estructura CHOOSECOLOR siempre se establece en HWND para uno de sus niveles de Tk. Para que sea compatible con el escritorio, deberás pasar NULL allí y Tk no te permite. Podrías buscar la versión de Unix (lib/clrpick.tcl) y mostrarla en su lugar, pero luego se vería raro en un escritorio de Windows.

Cuestiones relacionadas