Pregunta

He estado aprendiendo Python por un tiempo con cierto éxito.Incluso logré crear uno o dos programas (simples) usando PyGtk + Glade.

La cosa es:No estoy seguro de si la mejor manera de usar GTK con Python es construyendo las interfaces usando Glade.

Me preguntaba si los más experimentados entre nosotros (recuerden, solo soy un principiante) podrían señalar los beneficios y advertencias de usar Glade en lugar de crear todo en el código mismo (asumiendo que aprender los enlaces gtk correctos no ser exactamente un problema).

¿Fue útil?

Solución

Yo diría que depende:Si descubre que con Glade puede crear las aplicaciones que desea o necesita crear, está absolutamente bien.Sin embargo, si realmente desea aprender cómo funciona GTK o si tiene algunos requisitos de interfaz de usuario no estándar, deberá tener para profundizar en los aspectos internos de GTK (que no son tan complicados).

Personalmente, suelo tardar unos 5 minutos en un cliente enriquecido cuando necesito alguna característica o personalización que es simplemente imposible a través de un diseñador como Glade o estetico.Tal vez sea sólo yo.Sin embargo, todavía me resulta útil iniciar el diseño de ventanas utilizando una herramienta gráfica.

Mi recomendación:Si hacer clientes ricos usando GTK va a ser una parte importante de tu trabajo/pasatiempo, entonces aprende GTK también, ya que voluntad Necesito escribir ese código algún día.

PDpersonalmente encuentro estetico ser superior a Glade para el trabajo de diseño, aunque un poco más inestable.

Otros consejos

Utilice GtkBuilder en lugar de Glade, está integrado en Gtk en lugar de una biblioteca separada.

El principal beneficio de Glade es que es mucho, mucho más fácil crear la interfaz.Es un poco más trabajo conectar controladores de señales, pero nunca sentí que eso importara mucho.

Glade es muy útil para crear interfaces, lo que significa que puedes cambiar fácilmente la GUI sin necesidad de codificar mucho.Descubrirás que si quieres hacer algo útil (p. ej.crear una vista de árbol) tendrá que familiarizarse con varias partes de la documentación GTK; en la práctica, encontrará buenos tutoriales/ejemplos.

Comencé a usar glade, pero pronto pasé a hacer todo en código.Glade es bueno para cosas simples y es bueno cuando estás aprendiendo cómo GTK organiza los widgets (cómo se empaquetan las cosas, etc.).Sin embargo, al construir todo en código, tiene mucha más flexibilidad.Además, no tienes la dependencia de glade.

Normalmente empiezo con Glade hasta que llego a un punto en el que no tiene las funciones que necesito, p.creando un asistente.Mientras utilice los widgets estándar que proporciona Glade, realmente no hay razón para codificar manualmente la GUI.

Cuanto más cómodo me siento con la forma en que Glade formatea el código, mejor será mi codificación manual.Sin mencionar que es muy fácil usar Glade para crear el marco subyacente, por lo que no tienes que preocuparte por todas las inicializaciones.

Si está escribiendo una aplicación GUI tradicional que reutiliza muchos componentes estándar de GTK+ (botones, etiquetas, contenedores, etc.), personalmente elegiría Glade + Kiwi (un marco conveniente para crear aplicaciones GUI GTK+).

La mayor ventaja de usar Glade es que reduce en gran medida el código de diseño/empaquetado.Aquí hay un ejemplo extremadamente simple que ya muestra los problemas al diseñar manualmente una GUI (sin usar ninguna función auxiliar):

container = gtk.HBox()
label = gtk.Label(str="test")
container.add(label)

Para más ejemplos tome un mira aquí.Incluso si estás escribiendo un widget personalizado complicado, siempre puedes crear un marcador de posición en Glade y reemplazarlo después de la creación de instancias.

No debería pasar demasiado tiempo para que el equipo de Glade lance una nueva versión del diseñador (3.6.0).Esta nueva versión agregará soporte para GtkBuilder, que reemplaza a libglade (la biblioteca real que transforma los archivos XML de Glade en un árbol de widgets).El nuevo diseñador de Glade también agrega una vez más soporte para definir catálogos (conjuntos de widgets) en Python, para que pueda agregar fácilmente sus propios widgets personalizados.

Recomiendo usar Glade para un desarrollo rápido, pero no para aprender.¿Por qué?porque algunas veces necesitarás ajustar algunos widgets para que funcionen como quieres que funcionen, y si realmente no conoces/comprendes los atributos de propiedades de cada widget entonces tendrás problemas.

Para pantallas rápidas y sencillas uso Glade.Pero para cualquier cosa que necesite niveles de control más precisos, creo clases personalizadas para lo que realmente necesito (esto es importante, porque es demasiado fácil dejarse llevar por las generalizaciones).

Con clases específicas de aplicaciones delgadas, puedo cambiar rápidamente la apariencia de toda la aplicación desde un solo lugar.Más bien es como usar CSS para mantener la coherencia de los sitios web.

Personalmente recomendaría codificarlo en lugar de usar Glade.Todavía estoy aprendiendo Python y pyGtk, pero diré que escribir la interfaz de usuario a mano me dio mucha información sobre cómo funcionan las cosas internamente.

Una vez que lo hayas aprendido, te diría que le pruebes a Glade u otros diseñadores de UI, pero definitivamente aprende a hacerlo de la manera "difícil" primero.

Primero, comience a poner esto en perspectiva.

Utilizarás GTK.Esta es una enorme biblioteca C construida en 1993 utilizando las mejores tradiciones del estilo de codificación de los años 70.Fue creado para ayudar a implementar GIMP, un aspirante a competidor de Photoshop con errores legendarios en la interfaz de usuario.Un campo de interfaz gráfica de usuario típico puede tener cuarenta o más parámetros, en su mayoría repetitivos, con captadores y definidores.Habrá dolor.

El propio GTK gestiona un completo sistema de tipos dinámicos en C utilizando GObject.Esto hace que la depuración sea un placer especial que requiere recorrer manualmente conjuntos de punteros a métodos llenos de listas de argumentos genéricos con herencia implícita.También saltará a través de las bibliotecas de Pango cuando menos lo espere, por ejemplo, usando una constante de Pango para determinar dónde van los puntos suspensivos en una etiqueta cuando la página es pequeña.Espere más dolor.

A estas alturas, probablemente esté prometiendo envolver todas sus interacciones GTK en una arquitectura Modelo-Vista-Controlador específica para su aplicación.Esto es bueno.

Usar Glade, gtkBuilder o Stetic ayudará a solucionar el enorme problema de acoplamiento de cuarenta parámetros a una función.Glade proporciona un generador de GUI básico para arrastrar y soltar componentes juntos.Los parámetros y los parámetros heredados están algo separados.La salida de Glade es un archivo XML .glade que luego leerá, adjuntará sus devoluciones de llamada ("controladores de señales") a funciones con nombres idénticos y consultará o actualizará la versión en memoria de ese XML para obtener widgets que luego usará pyGTK. manipular.Glade en sí es chirriante y no está bien mantenido.

El uso de pyGTK le brinda un control detallado y molesto para construir su GUI.Este será un código detallado, de copiar y pegar.Cada atributo será una llamada de función separada.El definidor de atributos no devuelve nada, por lo que encadenar las llamadas está fuera de discusión.Por lo general, su IDE solo brindará una ayuda mínima sobre el significado de las funciones y usted consultará constantemente DevHelp o alguna otra herramienta.

Casi se esperaría que las GUI GTK estuvieran destinadas a fallar.

Puedes usar glade-2 para diseñar y usar glade2py.py Para generar el código PYGTK puro, usa pygtkcompat para admitir GTK3

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top