我正在使用 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 区域中输入一整行文本。很少/没有文本,它开始正常,但随着输入文本,列表框的背景变为黑色。
关于导致此问题或如何解决此问题的任何想法?