我使用的是Ubuntu 14.10。
我正在尝试为数据输入创建一个GtkDialog。该对话框有一个ListBox对象,ListBoxRows主要包含Gtk.Entry对象。
这一切都正常,直到我添加一个带有嵌入式TextView对象的ScrolledWindow,它将周围区域(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区域中输入完整的文本行。使用很少/没有文本时,它开始正常,但是当输入文本时,列表框的背景变为黑色。
有关导致此问题或如何解决问题的任何想法?