web-dev-qa-db-fra.com

Comment ajouter un carnet à une boîte dans une VBox?

J'ai créé une boîte vide dans Glade à laquelle ajouter un cahier. La raison pour laquelle je n'ajoute pas le bloc-notes réel dans Glade, c'est parce que j'entends dire que vous ne pouvez pas ajouter de pages à un bloc-notes créé dans Glade.

Ainsi, dans Glade, j'ai créé une boîte dans un emplacement vide dans une VBox. Le code que je lance est:

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

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

Rien ne se passe lors de la course, sauf ces avertissements qui, je crois, se produiront de toute façon:

/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)
7
njallam

Voici un exemple qui a du contexte

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()

Cela fonctionne avec ce fichier glade

Il fournit cette fonctionnalité: enter image description here

Cela fonctionne également si vous utilisez votre propre bloc-notes. Notez que lorsque vous exécutez l'exemple, vous voyez une légère modification de la géométrie de la fenêtre (l'objet ajouté), mais le rendu ne semble pas s'afficher car il ne contient pas encore d'onglets.

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()
10
RobotHumans