Wie füge ich einer Box in einer VBox ein Notebook hinzu?

7

Ich habe in Glade ein leeres Feld erstellt, um ein Notizbuch hinzuzufügen. Der Grund, warum ich das eigentliche Notizbuch nicht in Glade hinzufüge, ist, dass ich höre, dass Sie einem in Glade erstellten Notizbuch keine Seiten hinzufügen können.

Also habe ich in Glade eine Box in einem leeren Steckplatz in einer VBox erstellt. Der Code, den ich ausführe, lautet:

self.box = self.builder.get_object("box")

self.subjects = Gtk.Notebook()
self.box.add(self.subjects)

Beim Laufen passiert nichts, außer diesen Warnungen, von denen ich glaube, dass sie trotzdem auftreten werden:

/usr/lib/python2.7/dist-packages/gi/overrides/Gtk.py:391: Warning: g_object_set_property: construct property "type" for object `Window' can't be set after construction
Gtk.Window.__init__(self, type=type, **kwds)
/usr/lib/python2.7/dist-packages/gi/overrides/Gtk.py:391: Warning: g_object_set_property: construct property "type" for object `NotetakerWindow' can't be set after construction
Gtk.Window.__init__(self, type=type, **kwds)
Njallam
quelle
Haben Sie dort irgendwo einen .show_all () -Aufruf? Es ist schwierig, Probleme mit 3-Zeilen-Snippets zu beheben. Sie bitten im Wesentlichen jemanden, ein Snippet zu schreiben, das Sie für Sie in Ihre Bewerbung einfügen können.
RobotHumans

Antworten:

10

Hier ist ein Beispiel mit Kontext

from gi.repository import Gtk

class Handler:
    def onDeleteWindow(self, *args):
        Gtk.main_quit(*args)

    def addNotebookClick(self, *args):
        vbox = builder.get_object("attachtome")
        mynote = builder.get_object("notebook1")
        temp = Gtk.Box()
        mynote.reparent(temp)
        vbox.pack_start(temp, expand=False, fill=False, padding=0)
        window.show_all()

builder = Gtk.Builder()
builder.add_from_file("howtoaskaprogrammingquestion.glade")
builder.connect_signals(Handler())
window = builder.get_object("window1")
window.show_all()

Gtk.main()

Es funktioniert mit dieser Glade-Datei

Es bietet diese Funktionalität: Geben Sie hier die Bildbeschreibung ein

Dies funktioniert auch, wenn Sie Ihr eigenes Notebook verwenden. Beachten Sie, dass beim Ausführen des Beispiels eine geringfügige Änderung der Fenstergeometrie (das hinzugefügte Objekt) angezeigt wird, das jedoch nicht gerendert zu werden scheint, da es noch keine Registerkarten enthält.

from gi.repository import Gtk
class Handler:
    def onDeleteWindow(self, *args):
        Gtk.main_quit(*args)

    def addNotebookClick(self, *args):
        vbox = builder.get_object("attachtome")
        mynote = Gtk.Notebook()
        #mynote = builder.get_object("notebook1")
        #temp = Gtk.Box()
        #mynote.reparent(temp)
        vbox.pack_start(mynote, expand=False, fill=False, padding=0)
        window.show_all()

builder = Gtk.Builder()
builder.add_from_file("howtoaskaprogrammingquestion.glade")
builder.connect_signals(Handler())
window = builder.get_object("window1")
window.show_all()

Gtk.main()
RobotHumans
quelle
OK, danke, aber wie erstelle ich das Notizbuch in Python?
Njallam
Fügen Sie diesen Teil des Kontexts zur Frage hinzu, und ich werde ein Beispiel dafür liefern.
RobotHumans
Das Problem auf meiner Seite war das fehlende "window.show_all ()"
njallam