Wxpython-wx-notebook-class

提供:Dev Guides
移動先:案内検索

wxPython-ノートブッククラス

wxPythonクラスライブラリには、さまざまな「ブック」コントロールが含まれています。 *ブックコントロール*により、ユーザーはフレーム内のさまざまなパネルを切り替えることができます。 これは、大量のデータを表示する場合に特に便利です。

Bookクラスは wx.BookCtrlBase クラスから継承されます。 ブックコントロールの次のタイプが利用可能です-

  • wx.Notebook

  • wx.Choicebook

  • wx.Listbook

  • wx.Treebook

    *wx.Notebook* ウィジェットはタブ付きコントロールを提供します。 フレーム内の1つのNotebookオブジェクトには1つ以上のタブ(ページ)があり、各タブにはコントロールのレイアウトを表示するパネルがあります。 ユーザーは、それぞれのタブタイトルをクリックしてページを切り替えることができます。

ノートブッククラスのコンストラクタは、次のようなおなじみのパラメータを取ります-

wx.Notebook(parent, id, pos, size, style)

次のスタイルパラメータは、ウィジェットのカスタマイズに利用可能です-

以下に、最も一般的に使用されるスタイルのパラメーターを示します。

S.N. Parameters & Description
1

wx.NB_TOP

上部にタブを配置します

2

wx.NB_LEFT

左側にタブを配置します

3

wx.NB_RIGHT

右側にタブを配置します

4

wx.NB_BOTTOM

ノートブックページの上ではなく、ノートブックページの下にタブを配置します

5

wx.NB_FIXEDWIDTH

すべてのタブは同じ幅になります

6

wx.NB_MULTILINE

タブの複数の行がある場合があります

Notebookクラスのメンバー関数-

以下に、NoteBookの最も一般的に使用される機能を示します。

S.N. Functions & Description
1

OnSelChange()

ページ選択が変更されたときに呼び出されるハンドラー関数

2

SetPadding()

各ページのアイコンとラベルの周囲のスペースをピクセル単位で設定します

3

GetSelection()

現在選択されているページを返します

4

SetSelection()

指定したページに選択範囲を設定し、前の選択範囲を返します

5

AddPage()

新しいページを追加します

6

DeletePage()

指定されたインデックスのページを削除します

7

InsertPage()

指定されたインデックスに新しいタブを挿入します

8

RemovePage()

削除せずにページを削除します

このクラスに定義されているイベントバインダーは-

以下は、ノートブックの最も一般的に使用されるイベントです。

S.N. Events & Description
1

EVT_NOTEBOOK_PAGE_CHANGED()

ページ選択が変更されました

2

EVT_NOTEBOOK_PAGE_CHANGING()

ページ選択が変更されようとしています

次の例では、ノートブックコントロールをトップレベルフレームにデプロイします。

nb = wx.Notebook(self)

wx.Panelに基づく2つのクラスが設計されています。 最初に、複数行のTextCtrlを挿入します。

class MyPanel1(wx.Panel):
   def __init__(self, parent):
      super(MyPanel1, self).__init__(parent)
      text = wx.TextCtrl(self, style = wx.TE_MULTILINE, size = (250,150))

2番目は、3つのラジオボタンを持つRadioBoxを示しています。

class MyPanel2(wx.Panel):
   def __init__(self, parent):
      super(MyPanel2, self).__init__(parent)
      lblList = ['Value X', 'Value Y', 'Value Z']
      rbox = wx.RadioBox(self, label = 'RadioBox', pos = (25,10), choices = lblList,
         majorDimension = 1, style = wx.RA_SPECIFY_ROWS)

これら2つのパネルクラスのオブジェクトは、トップレベルフレームのノートブックにページとして追加されます。

nb.AddPage(MyPanel1(nb),"Editor")
nb.AddPage(MyPanel2(nb),"RadioButtons")

完全なコードは次のとおりです-

import wx

class MyDialog(wx.Dialog):
   def __init__(self, parent, title):
      super(MyDialog, self).__init__(parent, title = title, size = (250,150))
      panel = wx.Panel(self)
      self.btn = wx.Button(panel, wx.ID_OK, label = "ok", size = (50,20), pos = (75,50))

class Mywin(wx.Frame):

   def __init__(self, parent, title):
      super(Mywin, self).__init__(parent, title = title, size = (250,150))
      self.InitUI()

   def InitUI(self):
      nb = wx.Notebook(self)
      nb.AddPage(MyPanel1(nb),"Editor")
      nb.AddPage(MyPanel2(nb),"RadioButtons")
      self.Centre()
      self.Show(True)

class MyPanel1(wx.Panel):
   def __init__(self, parent):
      super(MyPanel1, self).__init__(parent)
      text = wx.TextCtrl(self, style = wx.TE_MULTILINE, size = (250,150))

class MyPanel2(wx.Panel):
   def __init__(self, parent):
      super(MyPanel2, self).__init__(parent)
      lblList = ['Value X', 'Value Y', 'Value Z']
      rbox = wx.RadioBox(self, label = 'RadioBox', pos = (25,10), choices = lblList,
         majorDimension = 1, style = wx.RA_SPECIFY_ROWS)

ex = wx.App()
Mywin(None,'NoteBook demo')
ex.MainLoop()

上記のコードは、次の出力を生成します-

ノートブックのデモ出力