ノートブックと言われてもピンとこないかもしれませんが、俗にいう「タブ」だと思って差し支えありません。
# -*- coding: utf-8 -*-
import wx
application = wx.App()
frame = wx.Frame(None, wx.ID_ANY, u"タイトル", size=(300, 300))
# Notebook
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)
# パネル1lにテキストを追加
wx.StaticText(panel_1, wx.ID_ANY, u'タブ1上のテキスト', pos=(50, 50))
# パネル2にボタンを追加
wx.Button(panel_2, wx.ID_ANY, u'タブ2上のボタン', pos=(20, 20))
# パネル3に画像を追加
wx.StaticBitmap(panel_3, wx.ID_ANY, wx.Bitmap('./python.ico'))
notebook.AddPage(panel_1, u"タブ1")
notebook.AddPage(panel_2, u"タブ2")
notebook.AddPage(panel_3, u"タブ3")
frame.Show()
# なんか変なのが表示される対処
notebook.Refresh()
application.MainLoop()
<結果>上記スクリプト内で、過去に解説した内容については省略致します。
ご確認いただきたい場合は、pythonでGUIツールを作る ~基礎編~をご覧ください。
続いて解説を行います。
- - - 詳細 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
notebook = wx.Notebook(frame, wx.ID_ANY)
ノートブックを使用するにはwx.Notebookクラスを使用します。基本的な引数は(親ウィジット、識別子)です。
上記サンプルでは、3つのパネルを作成し、それぞれにStaticText、Button、StaticBitmapを設置しています。
そして各パネルをノートブックに追加しています。
notebook.AddPage(panel_1, u"タブ1")
notebook.AddPage(panel_2, u"タブ2")
notebook.AddPage(panel_3, u"タブ3")
StaticText、Buttonについてはそれぞれの記事をご覧ください。pythonでGUIツールを作る ~スタティックテキスト(ラベル)~
pythonでGUIツールを作る ~ボタン~
また、(私の環境だけかもしれませんが)上記サンプルを実行した際、タブ1の左上部に■が表示されてしまいます。
これを回避するため、この一文を追加しています。
# なんか変なのが表示される対処
notebook.Refresh()
ノートブック作成時にスタイルを指定することでタブの位置を変更するなどが可能です。
# タブを上に配置
notebook = wx.Notebook(frame, wx.ID_ANY, wx.NB_TOP)
# タブを左に配置
notebook = wx.Notebook(frame, wx.ID_ANY, wx.NB_LEFT)
# タブを右に配置
notebook = wx.Notebook(frame, wx.ID_ANY, wx.NB_RIGHT)
# タブを下に配置
notebook = wx.Notebook(frame, wx.ID_ANY, wx.NB_BOTTOM)
# 全タブのサイズを統一する(Windows限定)
notebook = wx.Notebook(frame, wx.ID_ANY, wx.NB_FIXEDWIDTH)
# タブを複数行にする(Windows限定)
notebook = wx.Notebook(frame, wx.ID_ANY, wx.NB_MULTILINE)
続いて、ノートブックで使用する主な関数を列挙いたします。
# タブを追加する
notebook.AddPage()
# タブを指定の位置に追加する
notebook.InsertPage(インデックス値, 対象ウィジット、タブラベル)
例:notebook.InsertPage(1, panel_4、u'タブ4')
# 指定タブのラベルを取得する
notebook.GetPageText(インデックス値)
例:notebook.GetPageText(1) ## 1はインデックス値なのでタブ2のこと
# 指定タブのラベルを設定する
notebook.SetPageText(インデックス値, '新しいタブ名')
# タブ数を取得する
notebook.GetPageCount()
# 選択中のタブのインデックス値を取得する
notebook.GetSelection()
# 指定タブを選択状態にする
notebook.ChangeSelection(インデックス値)
# 指定タブを削除する
notebook.DeletePage(インデックス値)
# 全てのタブを削除する
notebook.DeleteAllPages()
こんにちは,いつも分かりやすい説明ありがとうございます!
返信削除> # 指定タブを削除する
> notebook.DeletePag(インデックス値)
この2行目がDeletePageになっていません。
暇なときに修正をお願いします。
コメント&ご指摘ありがとうございます。
削除修正させていただきましたm(_ _)m