3 Stimmen

Ein gtk.VBox dynamisch aktualisieren

Ich benutze diese Website ziemlich oft, um kleine Probleme zu lösen, die beim Programmieren in Python auftreten. Dieses Mal konnte ich jedoch irgendwie keine geeignete Lösung für meine Situation finden. Hier ist also mein Problem:

Ich möchte dynamisch Einträge zu einem gtk.VBox Widget hinzufügen. Das Problem ist, dass es nicht so funktioniert, wie ich es möchte. Ich habe einfach einen Button, dessen Aktion es ist, ein zusätzliches Widget zu einer VBox hinzuzufügen. Leider erscheint das Widget nicht auf dem Fenster. Ich vermute, dass ich etwas wie einen Repaint-Funktionsaufruf hinzufügen muss, aber ich habe nichts Derartiges gefunden. Hier ist ein Beispielcode, der mein Problem zeigt:

import gtk

class DynamicVbox:

    def __init__(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.connect("destroy", self.close_application)
        self.window.set_size_request(400,320)
        #a hBox to put the button and the dynamic vBox
        hBox = gtk.HBox(False, 0)

        addButton = gtk.Button("Checkbox hinzufügen")
        addButton.connect("clicked", self.AddCheckButton)

        self.vBox = gtk.VBox(False, 0)
        self.vBox.pack_start(gtk.CheckButton("CheckButton"), True, True, 1)
        hBox.pack_start(self.vBox, True, True, 5)
        hBox.pack_end(addButton, False, False, 5)
        self.window.add(hBox)

        #start gtk
        self.window.show_all()
        gtk.main()

    def AddCheckButton(self, button):
        self.vBox.pack_start(gtk.CheckButton("CheckButton"), True, True, 1)
        print "Checkbox wird hinzugefügt..."

    def close_application(self, widget):
        gtk.main_quit()

 # run it

a = DynamicVbox()

Ich wäre über jede Hilfe dankbar. Danke im Voraus.

6voto

Paul Kuliniewicz Punkte 2651

Der neue Kontrollknopf ist vorhanden, aber erst sichtbar, wenn Sie show() darauf aufrufen:

def AddCheckButton(self, button):
    button = gtk.CheckButton("CheckButton")
    self.vBox.pack_start(button, True, True, 1)
    button.show()
    print "Checkbox hinzufügen..."

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X