Добавление 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. С небольшим количеством текста или его отсутствием, все начинается нормально, но при вводе текста фон списка меняется на черный.
Любые идеи о том, что вызывает это или как обойти это?