Wxpython-wx-notebook-class
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()
上記のコードは、次の出力を生成します-