2010-10-21 7 views
7

Python 2.7 (32 bits) de Windows: Estamos experimentando con el apoyo de Python 2.7 para Tkinter temática (ttk) para la interfaz gráfica de usuario sencilla y venimos de lejos muy impresionado !! El área donde el nuevo soporte de tema parece haber quedado corto es cómo se envuelven los diálogos comunes específicos del sistema operativo.Python 2.7: Interfaces de interfaz temáticas de "diálogo común" a través de Ttk?

Corregido: En otras palabras, los MessageBoxColorChooser y diálogos comunes tienen mirando al estilo "fea" Win 95 botones que buscan en bloques temáticos frente a los botones (redondeado/pendiente) que normalmente aparecen en estos cuadros de diálogo comunes bajo XP, Vista, y Windows 7. (Estoy probando en las 3 plataformas con resultados idénticos, no temáticos).

Nota: Los cuadros de diálogo comunes (FileDialog askopenfilename, askopenfilenames, asksaveasfilename, askdirectory) están todos debidamente temática.

import tkMessageBox as messagebox 
messagebox.showinfo() 

import tkColorChooser as colorchooser 
color = colorchooser.askcolor(parent=root, title='Customize colors') 

¿Alguna idea sobre lo que se requiere para obtener de MessageBoxColorChooser diálogos comunes Tkinter y para ser compatible con el tema del sistema operativo (por lo menos en Windows XP o superior)?

+0

Esta es una gran captura. Voy a traer esto al rastreador de errores en Python y ver si podemos hacer algún progreso. –

+0

Rafe: Gracias por actualizar el rastreador de errores de Python con este problema. Estaría más que feliz de ayudar a corregir este problema. No estoy seguro de a qué puedo contribuir en cuanto al código, pero me gustaría probar cualquier corrección de código en varias versiones de Windows, por ej. XP, Vista, Windows 7. – Malcolm

+0

Aquí hay un enlace al problema, siempre puedes mirar la fuente y ver si hay una forma de corregir la fuente. La forma en que funcionan las cosas es que, aunque no se puede codificar unilateralmente, cualquiera puede escribir parches y hacer que los revisen. http://bugs.python.org/issue10171 –

Respuesta

2

Su observación es fundamentalmente correcta. Veo a qué se refiere en el messagebox y el colorchooser. Sin embargo, mis filedialogs todos parecen tener botones adecuadamente redondeadas, etc.

Mi recomendación para usted en hacer que el cuadro de mensaje es crear su propio cuadro de mensaje usando el widget TopLevel, y luego definir lo que necesita en él y el comportamiento apropiado para los diferentes botones (definitivamente es un poco más difícil que usar un messagebox, pero si realmente necesitas los nuevos botones de estilo, funcionará).

no creo que se puede hackear juntos una solución para el problema colorchooser, sin embargo.

pensé por un momento que quizá Python 3.1 ha solucionado este problema, pero por desgracia, tratado y que no es el caso. Supongo que si necesitas que el usuario elija un color, los botones tendrán que ser feos.

+0

Rafe: Sí, está en lo correcto ... los diagramas de archivo DO se muestran como se espera con soporte para botones temáticos (redondeados). La falta de compatibilidad con temas parece estar limitada a los cuadros de diálogo messagebox y colorchooser. – Malcolm

+0

También he notado la siguiente rareza: todos los diálogos de archivos (y el selector de color) se muestran en relación con la esquina superior izquierda de la ventana primaria ... EXCEPTO el diálogo askdirectory() que se centra en el escritorio. – Malcolm

+0

@Malcolm: eso es bastante extraño. No creo que alguna vez lo note de forma independiente. –

0

una opción para obtener los cuadros de diálogo de mejor apariencia es compilar la secuencia de comandos a un archivo ejecutable utilizando pyinstaller. Lo explico más a fondo here.

tl; dr, parece que compilar con pyinstaller le permite tener cuadros de diálogo con el estilo del sistema operativo en ejecución actualmente, pero no con estilos personalizados.

Cuestiones relacionadas