Python入門から応用までの学習サイト


Notebook

wxPythonタブ化して表示する場合は、Notebookを使用します。スッキリとしたレイアウトが実現出来るので、部品の数が多い場合やグループ化した方が良い場合などのケースで役に立つでしょう。

20行目から22行目でそれぞれ別のパネルを「Notebook」へ追加し、タブ化して表示しています。「InsertPage」の引数は、タブインデックス、追加部品、タブ名称の順番です。

# -*- coding: utf-8 -*- 

import wx

application = wx.App()
frame = wx.Frame(None, wx.ID_ANY, u"テストフレーム", size=(300,150))

notebook = wx.Notebook(frame, wx.ID_ANY)

panel_1 = wx.Panel(notebook, wx.ID_ANY)
panel_2 = wx.Panel(notebook, wx.ID_ANY)
panel_3 = wx.Panel(notebook, wx.ID_ANY)

panel_1.SetBackgroundColour("#FF0000")
panel_2.SetBackgroundColour("#00FF00")
panel_3.SetBackgroundColour("#0000FF")

notebook.InsertPage(0, panel_1, "tab_1")
notebook.InsertPage(1, panel_2, "tab_2")
notebook.InsertPage(2, panel_3, "tab_3")

frame.Show()
application.MainLoop()

--実行結果--

それぞれのタブを選択した状態です。

wxPython_notebook_01
wxPython_notebook_02
wxPython_notebook_03



タブの表示位置を上下左右で指定する事が可能です。Notebookの初期化時に「style」を渡します。

※指定無しの場合は「wx.NB_TOP」が適用され、タブは上部に表示されます。

# -*- coding: utf-8 -*- 

import wx

application = wx.App()
frame = wx.Frame(None, wx.ID_ANY, u"テストフレーム", size=(300,300))

notebook = wx.Notebook(frame, wx.ID_ANY, style=wx.NB_RIGHT)
#notebook = wx.Notebook(frame, wx.ID_ANY, style=wx.NB_LEFT)
#notebook = wx.Notebook(frame, wx.ID_ANY, style=wx.NB_BOTTOM)

panel_1 = wx.Panel(notebook, wx.ID_ANY)
panel_2 = wx.Panel(notebook, wx.ID_ANY)
panel_3 = wx.Panel(notebook, wx.ID_ANY)

panel_1.SetBackgroundColour("#FF0000")
panel_2.SetBackgroundColour("#00FF00")
panel_3.SetBackgroundColour("#0000FF")

notebook.InsertPage(0, panel_1, "tab_1")
notebook.InsertPage(1, panel_2, "tab_2")
notebook.InsertPage(2, panel_3, "tab_3")

frame.Show()
application.MainLoop()

--実行結果--

「wx.NB_RIGHT」が適用され、右部にタブが表示されています。

wxPython_notebook_04



指定のタブにアイコンの割り当てを行います。やや癖のある手順を踏まねばなりません。

  • 22行目  「ImageList」を初期化(引数は表示するイメージファイルの縦px、横px)
  • 23行目  表示させたいイメージファイルを指定し「Icon」を初期化します
  • 24行目  「ImageList」へ初期化した「Icon」を追加します
  • 25行目  「Notebook」へ使用する「Icon」を追加済みの「ImageList」をセットします
  • 27行目  「SetPageImage」でアイコンを適用します(引数はタブインデックスと「ImageList」内のインデックス)
# -*- coding: utf-8 -*- 

import wx

application = wx.App()
frame = wx.Frame(None, wx.ID_ANY, u"テストフレーム", size=(300,300))

notebook = wx.Notebook(frame, wx.ID_ANY)

panel_1 = wx.Panel(notebook, wx.ID_ANY)
panel_2 = wx.Panel(notebook, wx.ID_ANY)
panel_3 = wx.Panel(notebook, wx.ID_ANY)

panel_1.SetBackgroundColour("#FF0000")
panel_2.SetBackgroundColour("#00FF00")
panel_3.SetBackgroundColour("#0000FF")

notebook.InsertPage(0, panel_1, "tab_1")
notebook.InsertPage(1, panel_2, "tab_2")
notebook.InsertPage(2, panel_3, "tab_3")

image_list = wx.ImageList(16, 16)
icon = wx.Icon("tab_3.ico", wx.BITMAP_TYPE_ICO)
image_list.AddIcon(icon)
notebook.AssignImageList(image_list)

notebook.SetPageImage(2, 0)

frame.Show()
application.MainLoop()

--実行結果--

「tab_3」にアイコンを割り当てています。

wxPython_notebook_07




Python
スタートブック


入門 Python 3


Effective
Python


退屈なことは
Pythonにやらせよう

 
 
 

これまでに学んだSizerを組み合わせてみましょう!



確かな力が身につく
Python「超」入門




P  R