PyGTK-ノートブッククラス

ノートブックウィジェットはタブ付きコンテナです。このコンテナの各タブは異なるページを保持し、ページは重複して表示されます。タブのラベルをクリックすると、任意のページが表示されます。ラベルは、上または下、あるいは左または右に表示されるように構成できます。他のウィジェットが配置されたコンテナウィジェットまたは単一のウィジェットが各ページの下に配置されます。

1つのビューで表示するデータが大きすぎる場合、データは異なるページにグループ化され、それぞれがノートブックウィジェットの1つのタブの下に配置されます。このタイプの制御は非常に広く使用されています。たとえば、インターネットブラウザは、このタブ付きディスプレイを使用して、さまざまなタブでさまざまなページをレンダリングします。

以下はgtk.Notebookクラスのコンストラクターです-

gtk.Notebook()

以下は、gtk.Notebookクラスで頻繁に使用されるメソッドです。

  • append_page(child, label)−これにより、タブのラベルとしてtab_labelで指定されたウィジェットを含むページがノートブックに追加されます。tab_labelをNoneにすると、デフォルトのラベルが使用されます。

  • insert_page(child, label, position) −これにより、ノートブックの位置で指定された場所にページが挿入されます。

  • remove_page(index) −指定したインデックスのページを削除します。

  • get_current_page() −現在のページのページインデックスを返します。

  • set_current_page(index) −インデックスで指定されたページ番号に切り替わります。

  • set_show_tabs()− falseの場合、タブは表示されません。これはデフォルトでTrueです。

  • set_tab_pos(pos)−これは、ノートブックのページを切り替えるためのタブが描画されるエッジを設定します。事前定義された定数は次のとおりです。

    • gtk.POS_LEFT

    • gtk.POS_RIGHT

    • gtk.POS_TOP

    • gtk.POS_BOTTOM

  • set_tab_label_text(child, text) −これにより、指定されたテキストで新しいラベルが作成され、子を含むページのタブラベルとして設定されます。

gtk.Notebookウィジェットは次のシグナルを発します-

現在のページの変更 これは、ページ順方向またはページ逆方向の要求が発行されたときに発行されます
フォーカスタブ これは、タブでフォーカスを変更したときに発生します。
ページ追加 これは、ページがノートブックに追加されたときに発行されます。
ページが削除されました これは、ページがノートブックから削除された後に発行されます。
選択ページ これは、新しい子ページが選択されたときに発行されます。
ページの切り替え これは、ノートブックのページが変更されたときに発行されます。

次の例では、3ページのgtk.Notebookがトップレベルのgtk.Windowに配置されています。最初のページには、ラベルと入力フィールドがパックされたVBoxがあります。'qualifications'というラベルの付いた2番目のページには、相互に排他的な3つのRadioButtonウィジェットが追加されたHButtonBoxがあります。3番目のページにはTextViewオブジェクトがあります。ページラベルが上部に表示されます。

コードを観察する-

import gtk
class PyApp(gtk.Window):
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Notebook Demo")
      self.set_default_size(250, 200)
		
      nb = gtk.Notebook()
      nb.set_tab_pos(gtk.POS_TOP)
      vbox = gtk.VBox(False, 5)
		
      vb = gtk.VBox()
      hbox = gtk.HBox(True, 3)
		
      valign = gtk.Alignment(0.5,0.25, 0, 0)
      lbl = gtk.Label("Name of student")
		
      vb.pack_start(lbl, True, True, 10)
      text = gtk.Entry()
		
      vb.pack_start(text, True, True, 10)
      valign.add(vb)
		
      vbox.pack_start(valign)
      nb.append_page(vbox)
      nb.set_tab_label_text(vbox, "Name")
      hb = gtk.HButtonBox()
		
      btn1 = gtk.RadioButton(None,"Degree")
      hb.add(btn1)
		
      btn2 = gtk.RadioButton(btn1,"P.G.")
      hb.add(btn2)
		
      btn3 = gtk.RadioButton(btn1,"Doctorate")
      hb.add(btn3)
		
      nb.append_page(hb)
      nb.set_tab_label_text(hb, "Qualification")
		
      tv = gtk.TextView()
      nb.append_page(tv)
      nb.set_tab_label_text(tv, "about")
		
      self.add(nb)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
if __name__ == '__main__':
   PyApp()
   gtk.main()

実行すると、上記のコードは3ページのノートブックを表示します-