- wxPython 教程
- wxPython - 首頁
- wxPython - 簡介
- wxPython - 環境配置
- wxPython - Hello World
- wxPython - GUI 構建工具
- wxPython - 主要類
- wxPython - 事件處理
- wxPython - 佈局管理
- wxPython - 按鈕
- wxPython - 可停靠視窗
- 多文件介面
- wxPython - 繪圖 API
- wxPython - 拖放操作
- wxPython 資源
- wxPython - 快速指南
- wxPython - 有用資源
- wxPython - 討論區
wxPython - 滑塊類
滑塊為使用者提供了一個槽,使用者可以在槽上移動一個滑塊手柄。它是一個經典的小部件,用於控制一個有界值。手柄在槽中的位置相當於控制元件下限和上限之間的整數。
wxPython API 包含 wx.Slider 類。它的功能與捲軸相同。滑塊提供了一種方便的方式來處理透過特定滑塊的 wx.EVT_SLIDER 事件繫結器來拖動手柄。
wx.Slider 建構函式的定義包含以下八個引數:
wx.Slider(parent, id, value, minValue, maxValue, pos, size, style)
滑塊的下限值和上限值由 minValue 和 maxValue 引數設定。起始值由 value 引數定義。
定義了許多樣式引數值。以下是一些:
| 序號 | 引數及描述 |
|---|---|
| 1 | wxSL_HORIZONTAL 水平滑塊 |
| 2 | wxSL_VERTICAL 垂直滑塊 |
| 3 | wxSL_AUTOTICKS 在滑塊上顯示刻度 |
| 4 | wxSL_LABELS 顯示最小值、最大值和當前值 |
| 5 | wxSL_MIN_MAX_LABELS 顯示最小值和最大值 |
| 6 | wxSL_VALUE_LABEL 僅顯示當前值 |
wx.Slider 類的有用方法:
| 序號 | 方法及描述 |
|---|---|
| 1 | GetMin() 返回滑塊的最小值 |
| 2 | GetMax() 返回滑塊的最大值 |
| 3 | GetValue() 返回滑塊的當前值 |
| 4 | SetMin() 設定滑塊的最小值 |
| 5 | SetMax() 設定滑塊的最大值 |
| 6 | SetRange() 設定滑塊的最小值和最大值 |
| 7 | SetValue() 以程式設計方式設定當前值 |
| 8 | SetTick() 在給定位置顯示刻度標記 |
| 9 | SetTickFreq() 設定最小值和最大值之間的刻度間隔 |
由於滑塊的行為類似於捲軸,因此也可以與它一起使用捲軸事件繫結器。
| 序號 | 事件及描述 |
|---|---|
| 1 | wx.EVT_SCROLL 處理滾動事件 |
| 2 | wx.EVT_SLIDER 當滑塊位置發生變化時,無論是透過移動手柄還是以程式設計方式 |
示例
在下面的示例中,滑塊用於控制標籤的大小。首先,一個滑塊物件放置在一個垂直的盒子sizer中,在其下方是一個 StaticText。
self.sld = wx.Slider(pnl, value = 10, minValue = 1, maxValue = 100, style = wx.SL_HORIZONTAL|wx.SL_LABELS) self.txt = wx.StaticText(pnl, label = 'Hello',style = wx.ALIGN_CENTER)
Wx.EVT_SLIDER 繫結器與 OnSliderScroll() 處理程式關聯。
self.sld.Bind(wx.EVT_SLIDER, self.OnSliderScroll)
處理程式本身獲取滑塊的當前值,並將其用作標籤文字的字型大小。
def OnSliderScroll(self, e): obj = e.GetEventObject() val = obj.GetValue() font = self.GetFont() font.SetPointSize(self.sld.GetValue()) self.txt.SetFont(font)
完整的程式碼如下:
import wx
class Mywin(wx.Frame):
def __init__(self, parent, title):
super(Mywin, self).__init__(parent, title = title,size = (250,150))
self.InitUI()
def InitUI(self):
pnl = wx.Panel(self)
vbox = wx.BoxSizer(wx.VERTICAL)
self.sld = wx.Slider(pnl, value = 10, minValue = 1, maxValue = 100,
style = wx.SL_HORIZONTAL|wx.SL_LABELS)
vbox.Add(self.sld,1,flag = wx.EXPAND | wx.ALIGN_CENTER_HORIZONTAL | wx.TOP, border = 20)
self.sld.Bind(wx.EVT_SLIDER, self.OnSliderScroll)
self.txt = wx.StaticText(pnl, label = 'Hello',style = wx.ALIGN_CENTER)
vbox.Add(self.txt,1,wx.ALIGN_CENTRE_HORIZONTAL)
pnl.SetSizer(vbox)
self.Centre()
self.Show(True)
def OnSliderScroll(self, e):
obj = e.GetEventObject()
val = obj.GetValue()
font = self.GetFont()
font.SetPointSize(self.sld.GetValue())
self.txt.SetFont(font)
ex = wx.App()
Mywin(None,'Slider demo')
ex.MainLoop()
執行程式碼並嘗試拖動滑塊手柄以檢視標籤字型大小的變化。以上程式碼產生以下輸出: