- wxPython 教程
- wxPython - 首頁
- wxPython - 簡介
- wxPython - 環境配置
- wxPython - Hello World
- wxPython - GUI 構建工具
- wxPython - 主要類
- wxPython - 事件處理
- wxPython - 佈局管理
- wxPython - 按鈕
- wxPython - 可停靠視窗
- 多文件介面
- wxPython - 繪圖 API
- wxPython - 拖放操作
- wxPython 資源
- wxPython - 快速指南
- wxPython - 有用資源
- wxPython - 討論
wxPython - Notebook 類
wxPython 類庫包含各種“book”控制元件。book 控制元件允許使用者在框架中的各個面板之間切換。當需要呈現大量資料時,這尤其有用。
Book 類繼承自wx.BookCtrlBase類。以下型別的 book 控制元件可用:
- wx.Notebook
- wx.Choicebook
- wx.Listbook
- wx.Treebook
wx.Notebook 小部件呈現一個選項卡式控制元件。框架中的一個 Notebook 物件具有一個或多個選項卡(稱為頁面),每個選項卡都有一個面板顯示控制元件的佈局。使用者可以透過點選相應的選項卡標題在頁面之間切換。
Notebook 類的建構函式採用以下熟悉的引數:
wx.Notebook(parent, id, pos, size, style)
以下樣式引數可用於自定義小部件:
| 序號 | 引數及說明 |
|---|---|
| 1 | wx.NB_TOP 將選項卡放置在頂部 |
| 2 | wx.NB_LEFT 將選項卡放置在左側 |
| 3 | wx.NB_RIGHT 將選項卡放置在右側 |
| 4 | wx.NB_BOTTOM 將選項卡放置在 Notebook 頁面的下方,而不是上方 |
| 5 | wx.NB_FIXEDWIDTH 所有選項卡都將具有相同的寬度 |
| 6 | wx.NB_MULTILINE 可以有多行選項卡 |
Notebook 類的成員函式:
| 序號 | 函式及說明 |
|---|---|
| 1 | OnSelChange() 頁面選擇更改時呼叫的處理程式函式 |
| 2 | SetPadding() 設定每個頁面圖示和標籤周圍的空間量(以畫素為單位) |
| 3 | GetSelection() 返回當前選擇的頁面 |
| 4 | SetSelection() 將選擇設定為給定的頁面,並返回之前的選擇 |
| 5 | AddPage() 新增一個新頁面 |
| 6 | DeletePage() 刪除給定索引的頁面 |
| 7 | InsertPage() 在給定索引處插入一個新選項卡 |
| 8 | RemovePage() 刪除頁面但不刪除內容 |
為該類定義的事件繫結器:
| 序號 | 事件及說明 |
|---|---|
| 1 | EVT_NOTEBOOK_PAGE_CHANGED() 頁面選擇已更改 |
| 2 | EVT_NOTEBOOK_PAGE_CHANGING() 頁面選擇即將更改 |
示例
以下示例在頂級框架中部署 Notebook 控制元件。
nb = wx.Notebook(self)
設計了兩個基於 wx.Panel 的類。第一個在其內放置一個多行 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))
第二個顯示一個具有三個單選按鈕的 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)
這兩個面板類的物件作為頁面新增到頂級框架上的 Notebook 中。
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()
以上程式碼產生以下輸出: