Pregunta

Necesito usar Gtk2 para un proyecto.Voy a estar usando python/ruby para ello.El problema es que el embalaje parece una especie de mística para mí.He intentado utilizar un VBox para que yo pudiera tener los siguientes widgets en mi ventana ( en el siguiente orden ):

  • barra de menú
  • barra de herramientas
  • vista de texto o editor de control

Me las he arreglado para "adivinar" a mi manera con pack_start y conseguir el diseño que yo necesito, pero me gustaría ser capaz de entenderlo.La documentación en Ruby Gtk2 parece demasiado poco intuitivo (y lo es el de python, ya que es el mismo, sólo se escriben para python), podría arrojar algo de luz?

También, set_size_request no siempre el trabajo cuando puedo añadir un componente con pack_start.¿Por qué es eso ?

¿Fue útil?

Solución

embalaje

Box es realmente simple, así que tal vez su falta de comprensión es porque se imagina que es más complicado de lo que es.

Layout es ya sea Vertical (como una pila de ladrillos) u horizontal (como una cola de personas). Cada elemento de diseño que puede expandirse o no se puede ampliar.

Horizontal (HBox)

[widget][widget][widget][widget]

Vertical (VBox)

[widget]
[widget]
[widget]
[widget]

Así, por ejemplo, una disposición horizontal (HBox) con dos botones, que el código sería:

import gtk
box = gtk.HBox()
b1 = gtk.Button('button1')
b2 = gtk.Button('button2')
box.pack_start(b1)
box.pack_start(b2)

Ahora bien, como el valor por defecto para el embalaje es tener expand=True, tanto los botones añadidos a la caja se expandirán y cada uno de ellos ocuparán la mitad del área. No importa cuál sea el tamaño del recipiente es. Pienso en esto como "elástico".

La expansión de widgets:

[[    widget    ][    widget    ]]

Así que, si quieres uno de los botones para no ampliar, se le empacar así:

box.pack_start(b1, expand=False)

No-expansión de widgets:

[[widget][        widget        ]]

A continuación, el botón sólo ocupará el espacio que necesita para dibujarse a sí mismo: Texto + + fronteras sombras + imágenes (si las hay), etc., y el otro botón se expandirá para rellenar el área restante. Normalmente, los botones no tienen que ser ampliado, por lo que una situación real es más un TextArea las se desea ampliar para llenar la ventana.

El otro parámetro que se puede pasar a pack_start es el parámetro de relleno, y normalmente esto puede ser ignorada. Es suficiente decir aquí que si expand=False entonces el parámetro fill se ignora por completo (ya que no tiene sentido en esa situación).

La otra cosa que usted ha mencionado es set_size_request. en general, yo diría que esto no es una buena idea. Digo en general, porque hay situaciones en las que se necesitan para utilizarlo. Pero para alguien que comienza con el embalaje de un interfaz de usuario GTK +, no te recomiendo no usarlo. En general, dejar que las cajas y otros recipientes manejen su diseño para usted. El <=> no hace exactamente lo que se espera que haga. No cambia el tamaño de un widget, sino que se limita la cantidad de espacio que va a solicitar. Se puede usar más, e incluso puede estirar para llenar los espacios más grandes. Rara vez se volverá más pequeña que la solicitud, pero de nuevo, ya que es sólo una "solicitud" no hay garantía de theat se cumplirá la solicitud.

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