Добавление scrolledwindow в listbox/listboxrow приводит к изменению цвета фона на черный

Я использую Ubuntu 14.10.

Я пытаюсь создать GtkDialog для ввода данных. Диалог имеет объект ListBox с ListBoxRows, содержащий в основном объекты Gtk.Entry.

Это все работает нормально, пока я не добавлю ScrolledWindow со встроенным объектом TextView, который превращает цвет фона окружающих областей (ListBox и ListBoxRows) в черный:

Скриншот окна с черным фоном

Вот небольшой пример, чтобы показать проблему:

from gi.repository import Gtk

class MyDialog(Gtk.Dialog):
  def __init__(self,parent):
    Gtk.Dialog.__init__(self, "Sample", parent,
      Gtk.DialogFlags.MODAL, buttons=(
      Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
      Gtk.STOCK_OK, Gtk.ResponseType.OK
      ))    
    self.controls=[]

    mainbox=self.get_content_area()
    listbox = Gtk.ListBox()
    listbox.set_selection_mode(Gtk.SelectionMode.NONE)
    mainbox.pack_start(listbox, True, True, 0)

    row = Gtk.ListBoxRow()
    hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=50)
    row.add(hbox)
    label = Gtk.Label("Label1", xalign=0)
    self.controls.append(Gtk.Entry())
    hbox.pack_start(label,False,True,0)
    hbox.pack_start(self.controls[0],True,True,0)
    listbox.add(row)

    row = Gtk.ListBoxRow()
    hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=50)
    row.add(hbox)
    label = Gtk.Label("Label2", xalign=0)
    self.controls.append(Gtk.Entry())
    hbox.pack_start(label,False,True,0)
    hbox.pack_start(self.controls[1],True,True,0)
    listbox.add(row)

    row = Gtk.ListBoxRow()
    hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=50)
    row.add(hbox)
    label = Gtk.Label("Label3", xalign=0)
    scrollwindow = Gtk.ScrolledWindow()
    scrollwindow.set_hexpand(True)
    scrollwindow.set_vexpand(True)
    self.controls.append(Gtk.TextView())
    self.textbuffer = self.controls[2].get_buffer()
    self.textbuffer.set_text("Sample text")
    scrollwindow.add(self.controls[2])
    hbox.pack_start(label,False,True,0)
    hbox.pack_start(scrollwindow,False,True,0)
    listbox.add(row)

    row = Gtk.ListBoxRow()
    hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=50)
    row.add(hbox)
    label = Gtk.Label("Label4", xalign=0)
    self.controls.append(Gtk.Entry())
    hbox.pack_start(label,False,True,0)
    hbox.pack_start(self.controls[3],True,True,0)
    listbox.add(row)

    self.show_all()

class MyWindow(Gtk.Window):

  def __init__(self):
    Gtk.Window.__init__(self,title="Test")
    dialog= MyDialog(self)
    response = dialog.run()
    exit()


if __name__ == '__main__':
  win = MyWindow()
  Gtk.main()

Чтобы воспроизвести проблему, вы должны ввести полную строку текста в области TextView. С небольшим количеством текста или его отсутствием, все начинается нормально, но при вводе текста фон списка меняется на черный.

Любые идеи о том, что вызывает это или как обойти это?

0 ответов

Другие вопросы по тегам