pygtk.HBox не перерисовывается после добавления - PullRequest
0 голосов
/ 19 марта 2012

У меня есть программа, написанная на Python, использующая PyGTK + Glade. Я использую Glade для создания макета и внутренне создаю некоторые другие элементы, включая список меток. У меня есть VBox размером 3, каждый из этих 3 элементов содержит EventBox, который содержит HBox.

Каждый HBox будет содержать динамически изменяющийся набор меток. Проблема в том, что после добавления элементов в HBox он ничего не показывает или не перерисовывается.

Как я уже сказал, есть некоторые события / функции, которые изменяют HBox, однако что-то подобное даже не работает:

def __init__(self):

    self.builder = gtk.Builder()
    self.builder.add_from_file("maininterface.glade")

    self.window = self.builder.get_object("mainWindow")

    self.fila1 = self.builder.get_object("hbox1")
    self.fila2 = self.builder.get_object("hbox2")
    self.fila3 = self.builder.get_object("hbox3")

    self.window.show_all()
    lab0 = gtk.Label("XXXXXX")
    self.fila1.add(lab0) #this label is not shown

    #if I uncomment the next line, it works:
    #self.window.show_all()

Очевидно, я что-то упустил, я не знаю что. Я мог бы сделать все добавления до show_all (), но это просто работает для инициализации, программа удалит / добавит элементы на лету.

PD: я использовал pack_end () вместо add (), но результат тот же.

1 Ответ

3 голосов
/ 19 марта 2012

Вам нужно будет вызвать gtk.Widget.show () для каждой метки, которую вы добавляете в HBox.Кроме того, вы можете вызвать gtk.Widget.show_all () на HBox после добавления одной или нескольких меток.

...