Domanda

Sto usando Glade-3 per costruire una suite di applicazioni Gtk.

Le applicazioni si suppone di avere un comune look-and-feel, e abbiamo deciso un "frame" comune che tutte le applicazioni condivideranno, che include una barra dei menu, barra degli strumenti, barra di stato (s), verticale pannello -. e uno spazio nel mezzo che sarà riempito da ogni applicazione

Questa "frame" comune è progettato utilizzando Glade-3 e salvato in formato GtkBuilder.

Quello che vorrei fare è progettare la "parte centrale" per ogni applicazione utilizzando Glade-3 come-bene, poi in qualche modo caricarlo nel frame principale.

E 'una cosa possibile? Non mi importa di riscrivere il frame principale in Gtk come è abbastanza semplice -. La carne principale sarà nei dettagli dell'applicazione specifici che abbiamo sicuramente vogliamo progettare utilizzando Glade

ho visto alcun modo per ottenere in qualche modo il risultato di lettura di un file GtkBuilder, e si conficca in un widget genitore.

sto usando Perl / Gtk2.

È stato utile?

Soluzione

Si può fare tutto questo utilizzando GtkBuilder. Ad esempio, dato questi file UI:

<!-- parent.ui -->
<interface>
    <object class='GtkWindow' id='window'/>  <!-- See #1 -->
</interface>

<!-- child1.ui -->
<interface>
    <object class='GtkLabel' id='content'>  <!-- See #2 -->
        <property name='label'>Hello World</property>
    </object>
</interface>

<!-- child2.ui -->
<interface>
    <object class='GtkLabel' id='content'>  <!-- See #2 -->
        <property name='label'>Hi there</property>
    </object>
</interface>

è possibile costruire due finestre utilizzando il seguente codice (in Python, mi dispiace, io non sono a conoscenza degli attacchi Perl).

def build(child_filename):
    builder = gtk.Builder()
    builder.add_from_file('parent.ui')
    builder.add_from_file(child_filename)
    window = builder.get_object('window')  #1
    content = builder.get_object('content')  #2
    window.add(content)
    window.show_all()
    return window

window1 = build('child1.ui')
window2 = build('child2.ui')

Si può anche costruire più copie della stessa finestra, se si desidera.

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