2011-02-10 2 views
2

Я использовал этот сайт довольно часто, чтобы решить небольшие проблемы, которые у меня есть при программировании на Python. На этот раз я не смог найти подходящего решения для моей ситуации. Итак, вот моя проблема:update a gtk.VBox динамически

Я хочу динамически добавлять записи в виджет gtk.VBox. Проблема в том, что она не работает так, как я хочу, чтобы она работала. У меня просто есть кнопка, действие которой заключается в добавлении дополнительного виджета в VBox. К сожалению, виджет не отображается в окне. Наверное, мне нужно добавить что-то вроде вызова функции repaint, но я не нашел ничего подобного. Вот пример кода, который показывает мою проблему:

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("add checkbox") 
     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 "adding checkbox..." 

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

# run it 

a = DynamicVbox() 

Оцените любую помощь. Заранее спасибо.

ответ

5

Кнопка новый чек, но не видно, пока вы не вызовете show() на нем:

def AddCheckButton(self, button): 
    button = gtk.CheckButton("CheckButton") 
    self.vBox.pack_start(button, True, True, 1) 
    button.show() 
    print "adding checkbox..." 
+0

Wow! Большое спасибо. Я полностью забыл показывать виджеты! Еще раз спасибо :) – Niko

+0

@Niko Если мой ответ ответил на ваш вопрос, нажмите галочку рядом с ним, чтобы сайт знал, что на это ответили. –

Смежные вопросы