2009-03-23 3 views
4

Ich habe den folgenden Code:Wie kann ich während der Laufzeit eine Seite zu einem Gtk Notebook Widget hinzufügen?


require "gtk2" 

# adds a page to the notebook with the given label 
def create_page(nb,label="untitled") 
    # create a textview 
    tx = Gtk::TextView.new 
    # append it 
    nb.append_page(tx,Gtk::Label.new(label)) 
end 

Gtk.init 
window = Gtk::Window.new 
window.set_default_size(800,600) 
window.signal_connect("destroy") { 
    Gtk.main_quit 
} 

container = Gtk::VBox.new 
notebook = Gtk::Notebook.new 
button  = Gtk::Button.new("New") 

# when I push the button, I want a new page to be added 
button.signal_connect("clicked") { 
    create_page(notebook) 
} 

container.pack_start(button,false,false,0) 
create_page(notebook) 
container.pack_start(notebook,true,true,0) 
window.add(container) 

window.show_all 
Gtk.main 

Im Grunde ist es ein Fenster auf einen Knopf und ein Notebook-Widget enthält. Ich möchte in der Lage sein, dem Notizbuch Widget eine neue Seite/Tab hinzuzufügen, wenn ich den Knopf drücke. Es passiert jedoch nichts. Gibt es ein Repaint irgendeiner Art, das ich manuell machen sollte? Verwende ich das Notebook-Widget? Wie kann ich zur Laufzeit ein Tab hinzufügen?

Antwort

7

dies durch Ersetzen:


button.signal_connect("clicked") { 
    create_page(notebook) 
} 

mit diesem:


button.signal_connect("clicked") { 
    create_page(notebook) 
    notebook.show_all 
} 

die neu hinzugefügten tabs/Seiten sichtbar werden.

+0

Gott! Warum bin ich vor 12 Stunden nicht auf diese Antwort gestoßen? Danke @Tempus – SherCoder

+0

@Tempus Danke. Dies half mir mit einigen Vala-Code, den ich schreibe. – meffordm

Verwandte Themen