实战wxPython:035 - 基本控件之滑块Slider

wx.Slider控件提供一个垂直或者水平的滑动条,它允许用户沿水平或者垂直方向在某一范围内移动滑块,并将滑块所在的位置转换为一个合法范围内的整数值。

一、wx.Slider简介

wx.Slider窗口样式

  • wx.SL_HORIZONTAL:水平显示滑块(这是默认值)。
  • wx.SL_VERTICAL:垂直显示滑块。
  • wx.SL_AUTOTICKS:显示标记(仅支持部分系统)。
  • wx.SL_MIN_MAX_LABELS:显示最小、最大标签。
  • wx.SL_VALUE_LABEL:显示值标签。
  • wx.SL_LABELS:显示最小值、最大值和值标签(等同于wx.SL_VALUE_LABEL 和wx. SL_MIN_MAX_LABELS一起使用)。
  • wx.SL_LEFT:在左侧显示刻度,并强制滑块垂直(仅支持部分系统)。
  • wx.SL_RIGHT:在右侧显示刻度,并强制滑块垂直。
  • wx.SL_TOP:在顶端显示刻度(仅支持部分系统)。
  • wx.SL_BOTTOM:在底部显示刻度(默认值)。
  • wx.SL_BOTH:显示滑块两侧的刻度(仅Windows)。
  • wx.SL_SELRANGE:显示高亮显示的选择范围(仅Windows)。
  • wx.SL_INVERSE:反转滑块上的最小和最大端点。与wx.SL_SELRANGE不兼容。

wx.Slider发出的事件

  • EVT_SCROLL:处理所有滚动事件。
  • EVT_SCROLL_TOP:处理wx.EVT_SCROLL_TOP滚动到顶部事件(最小位置)。
  • EVT_SCROLL_BOTTOM:处理wx.EVT_SCROLL_BOTTOM滚动至底部事件(最大位置)。
  • EVT_SCROLL_LINEUP:处理wx.EVT_SCROLL_LINEUP line up事件。
  • EVT_SCROLL_LINEDOWN:处理wx.EVT_SCROLL_LINEDOWN line down事件。
  • EVT_SCROLL_PAGEUP:处理wx.EVT_SCROLL_PAGEUP page up事件。
  • EVT_SCROLL_PAGEDOWN:处理wx.EVT_SCROLL_PAGEDOWN page down事件。
  • EVT_SCROLL_THUMBTRACK:处理wx.EVT_SCROLL_THUMBTRACK thumbtrack事件(当用户拖动thumbtrack时发送的频繁事件)。
  • EVT_SCROLL_THUMBRELEASE:处理wx.EVT_SCROLL_THUMBRELEASE thumbtrack释放事件。
  • EVT_SCROLL_CHANGE:处理滚动结束的wx.EVT_SCROLL_CHANGED 事件(仅MSW)。
  • EVT_COMMAND_SCROLL:处理所有滚动事件。
  • EVT_COMMAND_SCROLL_TOP:处理wx.EVT_SCROLL_TOP滚动到顶部事件(最小位置)。
  • EVT_COMMAND_SCROLL_BOTTOM:处理wx.EVT_SCROLL_BOTTOM滚动至底部事件(最大位置)。
  • EVT_COMMAND_SCROLL_LINEUP:处理wx.EVT_SCROLL_LINEUP line up事件。
  • EVT_COMMAND_SCROLL_LINEDOWN:处理wx.EVT_SCROLL_LINEDOWN line down事件。
  • EVT_COMMAND_SCROLL_PAGEUP:处理wx.EVT_SCROLL_PAGEUP page up事件。
  • EVT_COMMAND_SCROLL_PAGEDOWN:处理wx.EVT_SCROLL_PAGEDOWN page down事件。
  • EVT_COMMAND_SCROLL_THUMBTRACK:处理wx.EVT_SCROLL_THUMBTRACK thumbtrack事件(当用户拖动thumbtrack时发送的频繁事件)。
  • EVT_COMMAND_SCROLL_THUMBRELEASE:处理wx.EVT_SCROLL_THUMBRELEASE thumbtrack释放事件。
  • EVT_COMMAND_SCROLL_CHANGED:处理滚动结束的wx.EVT_SCROLL_CHANGED 事件(仅MSW)。
  • EVT_SLIDER:处理在wx.Slider位置发生变化后, 将生成的wx.EVT_SLIDER事件。注意这个事件的处理处理将接收一个wx. CommandEvent作为参数,而不像其他事件以接收一个wx. ScrollEvent作为参数。

wx.Slider常用方法

  • ClearSel(self):当控件窗口样式设置有wx.SL_SELRANGE时,清除滑块上的选择区域。
  • ClearTicks(self):清除刻度。
  • GetLineSize(self):返回操作移动单位,这个移动单位用来在用户使用方向键操作滑块的时候使用。
  • GetMax(self):获得滑块设置的最大值。
  • GetMin(self):获得滑块设置的最小值。
  • GetPageSize(self):获得操作移动单位,这个单位在用户用鼠标点击滑条的任一边的时候使用。
  • GetRange(self):获得滑块的设置范围。
  • GetSelEnd(self):返回选择的结束点。
  • GetSelStart(self):返回选择的开始点。
  • GetThumbLength(self):返回Thumb的长度。
  • GetTickFreq(self):返回刻度的绘制频率。
  • GetValue(self):返回滑块当前位置。
  • SetLineSize(selflineSize):设置操作移动单位,这个移动单位用来在用户使用方向键操作滑块的时候使用。
  • SetMax(selfmaxValue):设置滑块的最大值。
  • SetMin(selfminValue):设置滑块的最小值。
  • SetPageSize(selfpageSize):设置操作移动单位,这个单位在用户用鼠标点击滑条的任一边的时候使用。
  • SetRange(selfminValuemaxValue):设置滑块的最大最小值。
  • SetSelection(selfstartPosendPos):设置选择位置。
  • SetThumbLength(selflen):设置Thumb长度。
  • SetTick(selftickPos):设置刻度位置。
  • SetTickFreq(selffreq):设置刻度绘制频率。
  • SetValue(selfvalue):设置滑块位置。

 图1:wx.Slider 类继承关系

二、wx.Slider演示

#滑动条(wx.Slider)

import wx

class SampleSlider(wx.Frame):

    def __init__(self, *args, **kw):
        super(SampleSlider, self).__init__(*args, **kw)

        self.InitUi()

    def InitUi(self):
        #设置标题
        self.SetTitle("实战wxPython: Slider演示")
        #设置窗口尺寸
        self.SetSize(400, 240)

        panel = wx.Panel(self)

        sizer = wx.GridBagSizer(5, 5)

        sld = wx.Slider(panel, value = 200, minValue = 0, maxValue = 500, style = wx.SL_HORIZONTAL)
        sld.Bind(wx.EVT_SCROLL, self.OnSliderScroll)
        sizer.Add(sld, pos = (0, 0), flag = wx.ALL | wx.EXPAND, border = 25)

        self.txt = wx.StaticText(panel, label="200")
        sizer.Add(self.txt, pos = (0, 1), flag = wx.TOP | wx.RIGHT, border = 25)

        sizer.AddGrowableCol(0)
        panel.SetSizer(sizer)

        self.Centre()

    def OnSliderScroll(self, e):
        obj = e.GetEventObject()
        val = obj.GetValue()

        self.txt.SetLabel(str(val))

def main():
    app = wx.App()
    sample = SampleSlider(None)
    sample.Show()
    app.MainLoop()

if __name__ == "__main__":
    main()

运行上面的代码,拖动滑块,滑块当前的值显示在右边的静态文本中。

 图2:wx.Slider 演示

sld = wx.Slider(panel, value = 200, minValue = 0, maxValue = 500, style = wx.SL_HORIZONTAL)

创建 一个wx.Slider滑块后,用value参数设置滑块的初始位置,用minValue和maxValue参数设置滑块的最小和最大位置。wx. SL_HORIZONTAL样式表示滑块是水平放置的。

sld.Bind(wx.EVT_SCROLL, self.OnSliderScroll)

当收到wx.EVT_SCROLL事件时,则调用OnSliderScroll方法进行处理。

self.txt = wx.StaticText(panel, label="200")

当前选择的滑块值显示在静态文本中。

def OnSliderScroll(self, e):
        obj = e.GetEventObject()
        val = obj.GetValue()

        self.txt.SetLabel(str(val))

在OnSliderScroll()方法中,获得滑块的当前值,并将其设置为静态文本。

三、本文知识点

  • 了解和使用wx.Slider。

前一篇:实战wxPython:034 - 基本控件之进度条Gauge

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值