Domanda

Ho bisogno di utilizzare Gtk2 per un progetto.Sarò utilizzando python/ruby per esso.Il problema è che la confezione sembra sorta di mistico per me.Ho provato ad utilizzare un VBox in modo che io possa avere i seguenti widget nella mia finestra ( nel seguente ordine ):

  • barra dei menu
  • barra degli strumenti
  • testo/editor di controllo

Sono riuscito a "indovinare" la mia strada con pack_start e il ottenere il layout che ho bisogno, ma mi piacerebbe essere in grado di capirlo.La documentazione Ruby Gtk2 sembra troppo poco intuitivo (e così è il python, perché è lo stesso, solo scritto in python), potrebbe far luce?

Inoltre, set_size_request non è sempre al lavoro quando ho aggiunto un componente con pack_start.Perché è che ?

È stato utile?

Soluzione

Imballaggio della scatola è davvero semplice, quindi, forse, la tua incapacità di capire è perché si immagina che è più complicato di quanto non sia.

Il Layout è in Verticale (come una pila di mattoni) o in orizzontale (come una coda di persone).Ogni elemento di layout può espandere o non può espandersi.

Orizzontale (HBox)

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

Verticale (VBox)

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

Così, per esempio, un layout Orizzontale (HBox) con due pulsanti, che il codice sarebbe:

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

Ora, dal momento che il default per l'imballaggio è quello di avere expand=True, sia quelli aggiunti i pulsanti per la casella di espandere e ognuno avrà occupare la metà della superficie.Non importa quale sia la dimensione del contenitore.Penso a questo come "elastico".

Espansione widget:

[[    widget    ][    widget    ]]

Quindi, se volete uno dei pulsanti di non espandere, di mettere in valigia come questo:

box.pack_start(b1, expand=False)

Non espansione widget:

[[widget][        widget        ]]

Quindi il pulsante occupare solo lo spazio necessario per disegnare se stesso:testo + confini + ombre + immagini (se del caso) etc.E l'altro pulsante si espande per riempire lo spazio rimanente.Normalmente, i pulsanti non hanno bisogno di essere ampliato, in modo che una situazione più reale è un'area di testo che si desidera espandere fino a riempire la finestra.

L'altro parametro che può essere passato a pack_start è il riempimento parametro, e normalmente questo può essere ignorato.Basti qui dire che se expand=False quindi il fill il parametro viene ignorato completamente (perché non ha senso in quella situazione).

L'altra cosa che hai menzionato è set_size_request.Vorrei dire che questa non è una buona idea.Dico in generale, perché ci sono situazioni in cui è necessario utilizzare.Ma per chi, inizio con il confezionamento di una interfaccia utente GTK+, vorrei vivamente di non usarlo.In generale, lasciare le scatole e altri contenitori di gestire il layout per voi.Il set_size_request non esattamente quello che ci si aspetta di fare.Non modificare le dimensioni di un widget, ma solo quanto spazio verrà richiesta.Si può utilizzare più, e può anche allungare per riempire spazi più grandi.Raramente diventano più piccoli rispetto alla richiesta, ma, di nuovo, perché è solo una "richiesta" non vi è alcuna garanzia theat la richiesta sarà soddisfatta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top