tutorial gui examples example entry ejemplos user-interface tk

user interface - examples - ¿Por qué se considera que la GUI de Tk es fea?



tkinter python 2.7 install (7)

Las GUI de Tk parecen ser universalmente consideradas feas, pero me gustaría saber por qué específicamente. Algunos en el mundo de Tcl / Tk argumentarían que este es un punto discutible ya que ahora hay mucho mejor soporte para la apariencia y sensación nativa, que es una gran razón por la que decidí usar Tcl / Tk. Ahora, sin embargo, el problema es que, debido a que estoy aprovechando un vfs (sistema de archivos virtual) de Tcl / Starkit, los diálogos de archivos nativos no funcionan, y tendré que volver a diálogos de archivos Tk puros.

Por favor, estoy buscando razones técnicas específicas, por ejemplo, con respecto al aliasing de fuentes (o la falta de ellas) o el estilo de fuente, o el color, etcétera. Porque yo personalmente no compro el "es simplemente feo para mí". Para mí, es simplemente diferente, y cambio de Mac a Windows y Linux con regularidad, así que estoy acostumbrado a diferentes looks.

Específicamente, el aspecto adorno de una GUI tradicional de Tk se considera feo:


Creo que parte de la razón es que Tk es sorprendentemente potente y fácil de usar, pero no es muy útil. Dado que es tan fácil, las personas con poca experiencia en el diseño de la interfaz de usuario pueden hacer que algo funcione en muy poco tiempo. Pero, sin mucha experiencia, confían en los valores predeterminados y en el camino más corto hacia una solución (léase: no se tome el tiempo para ocultar las barras de desplazamiento cuando no las necesite, no use modismos comunes para las barras de herramientas, no lo haga). t alinear correctamente los widgets, etc.).

Desafortunadamente, los valores predeterminados de Tk no siempre son los más bonitos. Como muestra la captura de pantalla en la pregunta, el valor predeterminado utiliza anchos de borde relativamente gruesos y fuentes subóptimas, y las casillas de verificación son, en verdad, de los años 80. Sin embargo, en manos de un experto, todos estos problemas son problemas menores que pueden resolverse en momentos de inactividad.

Por ejemplo, con cinco minutos de ajustes, la captura de pantalla original puede verse así:

Ciertamente todavía es un poco torpe, pero podría decirse que es mucho mejor que el original en una cantidad considerable. Con una hora dedicada a la tarea, se podrían hacer varias mejoras más.

Con tk 8.5 (y en realidad durante un par de años antes) hay soporte para temas y widgets nativos, e incluso la versión X11 obtiene un lavado de cara menor. Sin embargo, Tk todavía está detrás de la curva de los ojos dulces, lo que obliga a uno a "rodar por sí mismo" si el diseño requiere gradientes, animaciones, etc.

Tcl y Tk, sin embargo, siguen siendo una buena solución pragmática para la mayoría de los tipos de aplicaciones. Si intenta competir con una aplicación flash, perderá. Pero si tiene una aplicación industrial que solo necesita funcionar y ser utilizable y tal vez multiplataforma, Tk sigue siendo una de las mejores opciones disponibles.

A partir de 2015, hay una buena reseña sobre la modernización de IDLE IDLE de Tkinter. El artículo describe algunos de los pasos dados para hacer que IDLE sea más moderno:


El argumento "es simplemente diferente" es, de hecho, la razón principal para mí. Las GUI de Tk no se ven ni se comportan como una aplicación nativa, lo que afecta el "aspecto y tacto" de múltiples formas pequeñas, lo que hace que una aplicación compleja se sienta extraña y torpe en comparación con las aplicaciones nativas en un sistema determinado.

Los diálogos de archivos pueden ser un ejemplo perfecto de lo que estoy escribiendo: pueden no ser "peores" o "mejores" que los diálogos nativos en algún sistema, pero son DIFERENTES, se comportan de manera diferente al resto de aplicaciones en el sistema.

Si eres usuario de MacOS X, puedes hacerte una idea al comparar las aplicaciones nativas de Mac con las aplicaciones que se ejecutan en Mac con la capa de compatibilidad X11 (como Gimp o Inkscape). Se comportan de manera diferente a todas las demás aplicaciones (ningún menú en la barra superior, cmd + pestaña funciona de manera diferente, cmd + backtick funciona de manera muy diferente), entonces - aunque su comportamiento es bueno en el escritorio Linux X11 - el mismo comportamiento se siente raro y torpe en Mac.

Lo malo de Tk es que estas GUI no son nativas en ninguna parte.

Para una IU portátil, puedo recomendar wxWidgets, que son solo una capa API común (una fachada) para cualquier UI nativa que tu sistema proporcione. Puede ser un poco offtopic para su situación actual, pero puede valer la pena mirar de todos modos.


Es bastante difícil de tratar y ser objetivo sobre un tema así, creo que es muy subjetivo en el fondo.

Algunos puntos que parecen molestarme:

  • Barras de desplazamiento en todas partes, no solo donde sea necesario
  • Barras de desplazamiento bastante "gordas", que ocupan mucho espacio
  • Un montón de fuentes de aspecto llamativo, por ejemplo, en los títulos del menú, etc.
  • Texto de ancho constante ("estilo de máquina de escribir") en algunos lugares


Porque su look-n-feel fue diseñado por personas que no son UX ni diseñadores de gráficos, sino programadores. Tal vez resuelve el problema (tiene la misma IU en varias plataformas), pero se ve feo.

Agregado: en realidad, obtener la IU hasta el punto en que no se considera feo es un arte. Tengo dos extremos en mi equipo. A un tipo simplemente no le importa la IU: ve un botón y es un botón sin importar cómo se dibuja en la pantalla; incluso si lo pintas con "verde" sobre un fondo rojo brillante, él todavía lo considerará un botón, porque "se cuartea como un botón". El otro miembro del equipo trata de hacer que la interfaz de usuario sea "genial". Pero ignora por completo el hecho de que no solo el aspecto brillante hace que Office 2007 sea "The Office 2007", sino también los iconos, la coherencia entre los controles, la forma en que interactúa con ellos, todos estos pequeños detalles que la soldadura luce con sentimiento. ¿El resultado? Un lápiz labial en un cerdo.


Solo un ejemplo: si miras el ejemplo que proporcionaste, verás muchas líneas adicionales: una barra de desplazamiento tiene algunas, luego el rectángulo del titular del texto tiene algunas, por lo que en el borde tienes bastante sucediendo.

Para un programador, puede que no haya nada de malo en que veamos lógicamente, y lógicamente cada elemento simplemente tiene su propio borde. Pero para el resto de la gente parece estar sobrecargado.

Esta es una pregunta de diseño visual, no de programación. Esto se parece más a "por qué el iPod es agradable y al tipo Zune feo": no se puede obtener una respuesta medible directa, la mayoría de la gente aún estaría de acuerdo, y ese es un hecho con el que debes hacer algo, si te preocupas por su opiniones, es decir, venderles.


TK tiene un soporte considerablemente mejor para las GUI de aspecto nativo de lo que solía hacerlo. Las versiones anteriores de Tk tenían un aspecto y estilo con motivos, que estaban destinados a ser utilizados con entornos de escritorio basados ​​en motivos como MWM y CDE. En este entorno, parecía una aplicación nativa. Durante mucho tiempo, Motif se utilizó como un conjunto de herramientas GUI por defecto para aplicaciones X11. El advenimiento de GTK y (en cierta medida) QT significa que este ya no es el caso para muchas de esas aplicaciones.

La mayoría de los toolkits de GUI multiplataforma modernos - GTK, QT Tk, WXWidgets y otros - tienen algún mecanismo para usar los widgets nativos subyacentes ahora. WX fue diseñado para hacer esto desde el principio: versiones GTK y Motif en X11, Win32 en Windows y (IIRC) una versión OSX. GTK tiene un motor de tematización y usa temas basados ​​en widgets nativos. QT emula la apariencia y Tk tiene un contenedor para el kit de herramientas nativo.

Ejemplos de aplicaciones TK con apariencia nativa:

  1. SnackAmp (Win32 en Vista)
  1. Acceso a PostgreSQL en Linux