2

Ubuntu 14.10 を使用しています。

データ入力用の GtkDialog を作成しようとしています。ダイアログには、主に Gtk.Entry オブジェクトを含む ListBoxRows を持つ ListBox オブジェクトがあります。

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 領域に 1 行のテキストを入力する必要があります。テキストがほとんどまたはまったくない場合、最初は正常に開始されますが、テキストを入力すると、リストボックスの背景が黒に変わります。

これを引き起こしている原因や回避方法についてのアイデアはありますか?

4

0 に答える 0