Wxpython-wx-slider-class

提供:Dev Guides
移動先:案内検索

wxPython-スライダークラス

  • スライダー*は、ハンドルを動かすことができる溝をユーザーに提示します。 境界値を制御するための古典的なウィジェットです。 溝のハンドルの位置は、コントロールの下限と上限の間の整数に相当します。

wxPython APIにはwx.Sliderクラスが含まれています。 Scrollbarと同じ機能を提供します。 スライダーは、スライダー固有のwx.EVT_SLIDERイベントバインダーによるハンドルのドラッグを処理する便利な方法を提供します。

wx.Sliderコンストラクタの定義は、次の8つのパラメータを取ります-

wx.Slider(parent, id, value, minValue, maxValue, pos, size, style)

スライダーの下限値と上限値は、minValueパラメーターとmaxValueパラメーターによって設定されます。 開始値は、valueパラメーターによって定義されます。

多くのスタイルパラメータ値が定義されています。 以下はそれらのいくつかです-

以下に、スタイルの最も一般的に使用されるパラメーターを示します。

S.N. Parameters & Description
1

wxSL_HORIZONTAL

水平スライダー

2

wxSL_VERTICAL

垂直スライダー

3

wxSL_AUTOTICKS

スライダーに目盛りを表示します

4

wxSL_LABELS

最小値、最大値、現在の値を表示します

5

wxSL_MIN_MAX_LABELS

最小値と最大値を表示します

6

wxSL_VALUE_LABEL

現在の値のみを表示します

wx.Sliderクラスの便利なメソッドは-

以下に、wx.Sliderの最も一般的に使用されるメソッドを示します

S.N. Methods & Description
1

GetMin()

スライダーの最小値を返します

2

GetMax()

スライダーの最大値を返します

3

GetValue()

スライダーの現在の値を返します

4

SetMin()

スライダーの最小値を設定します

5

SetMax()

スライダーの最大値を設定します

6

SetRange()

スライダーの最小値と最大値を設定します

7

SetValue()

プログラムで現在の値を設定します

8

SetTick()

指定された位置に目盛りを表示します

9

SetTickFreq()

最小値と最大値の間のティック間隔を設定します

スライダーはスクロールバーと同様に動作するため、スクロールバーイベントバインダーも一緒に使用できます。

S.N. Events & Description
1

wx.EVT_SCROLL

スクロールイベントを処理します

2

wx.EVT_SLIDER

ハンドルを動かすか、プログラムでスライダーの位置が変わったとき

次の例では、スライダーを使用してラベルのサイズを制御します。 まず、スライダーオブジェクトは、下に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()

コードを実行し、スライダーハンドルをドラッグして、ラベルのフォントサイズの変化を確認します。 上記のコードは、次の出力を生成します-

スライダー出力