2009-03-04 14 views
8

Tengo una aplicación que está diseñada para trabajar en Windows, Linux y Solaris que usa la GUI Perl/TK. Debido a restricciones, estamos limitados a Perl/TK solo. Además, estamos limitados a una versión anterior Perl/Tk, 5.00404.¿Cómo puedo mejorar el aspecto de la GUI de Perl/TK bajo Perl 5.004?

Me gustaría trabajar dentro de estas limitaciones para hacer que la GUI se vea lo más agradable y moderna posible.

¿Hay algún recurso web que tenga esquemas de diseño de TK (para botones, marcos, colores, etc.) que puedan ayudarme en este empeño?


También estoy en busca de consejos de modernización como la que he encontrado here:

Si usted está encontrando que sus aplicaciones Tk se ven un poco feo en los sistemas basados ​​en X, trate de añadir la siguiendo las líneas de la parte superior de la secuencia de comandos:

$mw->optionAdd("*font", "-*-arial-normal-r-*-*-*-120-*-*-*-*-*-*"); 
$mw->optionAdd("*borderWidth", 1); 
+1

¿Puede darnos una captura de pantalla de la aplicación? En mi experiencia, hacer una GUI agradable es más sobre diseño que sobre el conjunto de widgets (dependiendo de tu definición de "agradable", por supuesto). Tal vez si vemos lo que tienes actualmente, podemos hacer algunas sugerencias. –

+1

Déjame adivinar, Igor , usted trabaja para Intel? –

+0

Artem: Sí, lo recuerdo de un proyecto donde se optimizó el código perl existente –

Respuesta

5

Intente utilizar imágenes en lugar de elementos de botón, luego puede tener el estilo que desee y las fuentes se pueden hornear. Esto funcionará prácticamente para cualquier elemento donde los contenidos no sean dinámicos, incluidos fondos en paneles y tal. De acuerdo, es más trabajo pero resuelve tu problema, especialmente si tienes un artista competente en tu grupo de proyecto.

+0

esta puede no ser la solución más 'elegante', pero es muy pragmática. Una cosa a tener en cuenta es cambiar el tamaño. –

+0

Woo hoo! ¡Mi primera recompensa! Gracias. – SpliFF

5

Se podría utilizar el Tk theme engine para darle a su aplicación mejor aspecto.

+1

Downvoted porque no puede acceder a las cosas ttk de Perl 5.004. AFAICT usted necesita al menos 5.6 para acceder a los enlaces más nuevos (Tkx o Tcl :: Tk) que permiten el uso del soporte de temas en las versiones recientes de Tk. –

+0

Eso no es estrictamente cierto. Hay una biblioteca de compatibilidad (llamada "mosaico") que funciona con 8.5 (y ha trabajado con 8.5 desde hace un par de años). No tengo idea si eso se puede usar con Python o qué tan fácil sería. –

+1

No estoy seguro de qué tan relevante sea que se pueda usar con Python o no? – MkV

2

Usar la opción Agregar para modificar los valores predeterminados a través de la base de datos de opciones es un comienzo razonable. Un hilo de esto se puede encontrar en:

http://tcl.projectforum.com/tk/221

Descargar griffin.kit a partir de ahí, utilice la herramienta SDX a desenvolverlo y localizar griffin.tcl para conseguir un buen conjunto de valores de opciones.

http://wiki.tcl.tk/3411 para la herramienta sdx.

+0

¿Funciona con Perl/TK, o solo TCL/TK? –

+0

Está escrito para Tcl pero debe traducirse trivialmente a Perl. – Hugge

1

El motor temático Tile para Tk lo hace parecer mucho más bonito. Sin embargo, Perl/Tk se ha quedado muy atrás del desarrollo de Tk y no puede aprovechar Tile y otros avances.

Debe investigar si Tkx es una opción para usted. No es completamente compatible con Perl/Tk, pero la API está bastante cerca. Es un puente entre Perl y Tcl/Tk, por lo que puede usar todas las características modernas de Tcl/Tk (como Tile) mientras todavía tiene la lógica de la aplicación codificada en Perl. Algunas de las utilidades gráficas propias de ActiveState usan Tkx, con resultados bastante atractivos.
ActiveState PPM http://docs.activestate.com/activeperl/5.8/images/ppm_gui.png

Perl 5.00404 es increíblemente antiguo, sin embargo. El Tkx dist afirma que depende de Perl ≥ 5.008 ... No tengo un Perl lo suficientemente viejo como para ver qué tan exacto es eso.

1

Dado que en Linux el fondo de Tk :: Entry y Tk :: Text es gris también usaría las dos líneas siguientes.

$mw->optionAdd('*Entry.background', 'snow1'); 
$mw->optionAdd('*Text.background', 'snow1'); 

Reemplazar 'snow1' con un color de su elección. También puede usar la representación hexadecimal (RGB) de los colores como '# ff9696'.

+0

Me doy cuenta de la antigüedad de esta pregunta ... – AlexTheBird

+0

[¡No se preocupe más por la edad de una pregunta!] (Http://xkcd.com/979/). ¡2 años después y aquí estoy leyendo su respuesta y la encuentro muy útil! – Glutanimate

Cuestiones relacionadas