Grundlegendes zu Menu, Box und Button

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
kable
User
Beiträge: 7
Registriert: Mittwoch 13. September 2006, 09:22

Hallo miteinander

Wie der Titel schon andeutet, bin ich noch ein ziemlicher Anfänger in Sachen pygtk. Ich habe versucht ein einfaches GUI zu programmieren, bin aber schon an den grundlegenden dingen gescheitert. Das Einzige, was mir gelungen ist, ist ein einfaches Fenster zu erstellen.

Was ich nun machen möchte ist, erst einmal das Fenster in Bereiche aufzuteilen ( Soweit ich das verstanden hab, sollte das irgendwie mit gtk.Box gehen )
Es sollte dann etwa so aufgeteilt sein:
Bild
Oben kommt eine Menüleiste hin, links unten ein Ausgabefenster und rechts davon ein Bereich für Einstellungen.

Was ihr mir jetzt erklären könntet wäre:
- Wie genau teile ich das Fenster so auf
- Wie erstelle ich ein Menü
- Gibt es eine einfache Methode, Buttons in einem Bereich anzuordnen

Es würde mich freuen, wenn ihr alle Zusammenhänge zwischen den einzelnen Befehlen erklärt, damit ich auch das System dahinter verstehe.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Aus dem Kopf, da ich es nicht mehr so genau weiß (kannst du aber recht einfach im Tutorial finden):
Du erstellst eine gtk.MenuBar, diese fügst du deinem gtk.WindowWidget hinzu. Dann erstellst du darin eine gtk.HBox und fügst auch diese dem gtk.Window hinzu. Eine anderen Widgets baust du dann in diese gtk.HBox ein.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
kable
User
Beiträge: 7
Registriert: Mittwoch 13. September 2006, 09:22

Ein bisschen weiter bin ich jetzt gekommen:
Das Menü funktioniert, wie ich mir es vorgestellt hatte. Nur ist es immer noch über die ganze Höhe des Fensters ausgebreitet.
Die Verwendung der box funktion musst du mir wohl noch etwas genauer erklären...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Das ist eigentlich ganz einfach, lies dir das Kapitel 4 in dem Tutorial durch, dort steht was es für Layout Manager gibt und wie man sie benutzt. Gut möglich, dass du das Menü in eine VBox ganz oben reinpacken musst, damit es nicht das ganze Fenster einnimmt und die restlichen Boxen und Widgets weiter unten in die VBox packst. Ich habe das nicht mehr genau im Kopf.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Vortex
User
Beiträge: 16
Registriert: Sonntag 13. August 2006, 14:12
Kontaktdaten:

Du erstellst eine gtk.MenuBar, diese fügst du deinem gtk.WindowWidget hinzu. Dann erstellst du darin eine gtk.HBox und fügst auch diese dem gtk.Window hinzu.
Das klappt schonmal nicht, weil ein gtk.Window nur _ein_ Child-Widget haben kann.

Ich würde sagen du machst das so:

Du erstellst ein gtk.Window und packst da eine VBox rein. In die VBox packst du dann die Menubar, aber du musst angeben, dass sie sich nicht ausdehnen soll. Das geht so (achtung aus dem Kopf raus :) ):

Code: Alles auswählen

vbox.pack_start(menubar, False, False, 0)
Dann erstellst du eine HBox und packst die als nächstes in die VBox, dann hast du schonmal das Layout so wie du es haben wolltest. Aks nächstes kannst du dann die VBox mit weiteren Containern oder Widgets füllen. Bei gtk erzeugst du "Layouts" einfach indem du H- und VBoxen ineinander verschachtelst.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Vortex hat geschrieben:Bei gtk erzeugst du "Layouts" einfach indem du H- und VBoxen ineinander verschachtelst.
Oder ein gtk.Table verwendest, was ich als sehr bequem und einfach zu benutzen empfinde, wenn man erstmal die Funktionsweise verstanden hat.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
kable
User
Beiträge: 7
Registriert: Mittwoch 13. September 2006, 09:22

Danke vielmals!

Das Boxensystem habe ich jetzt glaube ich verstanden und mein Menü sieht auch so aus, wie ich es mir vorgestellt habe.

Da das nun geschafft wäre, stehe ich vor dem nächsten Problem:
Ich möchte in einem Bereich von diesem Fenster etwas zeichnen. Sollte, so weit ich das verstanden habe, mit Drawable oder mit Tkinter -> Canvas gehen. Nur, in den Beispielen wird immer ein neues Fenster erstellt, in dem dann gezeichnet wird. Ist es denn auch möglich so einen Zeichen-Bereich in einem bestehenden Fenster einzurichten?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

kable hat geschrieben:Da das nun geschafft wäre, stehe ich vor dem nächsten Problem:
Bitte nur eine Frage pro Thread, vor allem da diese mit der Vorherigen nichts zu tun hat.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten