Wxpython-wx-gauge-class

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

wxPython-ゲージクラス

wxPythonのProgressbarコントロールは Gauge と呼ばれます。 Wx.Gaugeクラスオブジェクトは垂直または水平のバーを表示し、増分量をグラフィカルに表示します。 通常、ファイルのコピーやソフトウェアのインストールなどのプロセスの進行を示すために使用されます。

  • Wx.Gaugeコントロール*は、確定モードおよび不確定モードで使用できます。 操作の完了に必要な時間がかなり正確に決定できる場合、ゲージの進行状況バーに完了したタスクの割合が表示されます。 ただし、不確定モードでは、プロセスが進行中であることを示すだけです。

確定モードでは、進行状況の位置が定期的に更新されます。 不確定モードでは、Pulse()関数を呼び出すと、進行状況バーが更新されます。

Wx.Gaugeクラスコンストラクターに必要なパラメーターは-

wx.Gauge(parent, id, range, pos, size, style)

範囲パラメーターは、ゲージの最大値を設定します。 不確定モードでは、このパラメーターは無視されます。

Gaugeクラスの可能なスタイルパラメータは次のとおりです-

S.N. Parameters & Description
1

wx.GA_HORIZONTAL

プログレスバーの水平レイアウト

2

wx.GA_VERTICAL

進行状況バーの垂直レイアウト

3

wx.GA_SMOOTH

1ピクセル幅の更新ステップで進行状況バーを滑らかにします

4

wx.GA_TEXT

現在の値をパーセントで表示します

このクラスの重要なメソッドのいくつかは、次の表に記載されています-

S.N. Methods & Description
1

GetRange()

ゲージの最大値を返します

2

SetRange()

ゲージの最大値を設定します

3

GetValue()

ゲージの現在の値を返します

4

SetValue()

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

5

Pulse()

ゲージを不確定モードに切り替えます

次の例では、水平Gaugeオブジェクトがパネルの垂直ボックスサイザーに追加されます。

self.gauge = wx.Gauge(pnl, range = 20, size = (250, 25), style = wx.GA_HORIZONTAL)

クリックイベントがハンドラー関数に関連付けられているボタンもあります。

self.btn1 = wx.Button(pnl, label = "Start")
self.Bind(wx.EVT_BUTTON, self.OnStart, self.btn1)

ハンドラー関数OnStart()は、ゲージの進行状況を1秒ごとに更新します。

def OnStart(self, e):
   while True:
      time.sleep(1);
      self.count = self.count + 1
      self.gauge.SetValue(self.count)

      if self.count >= 20:
         print "end"
         return

例の完全なコードは次のとおりです-

import wx
import time
class Mywin(wx.Frame):

   def __init__(self, parent, title):
      super(Mywin, self).__init__(parent, title = title,size = (300,200))
      self.InitUI()

   def InitUI(self):
      self.count = 0
      pnl = wx.Panel(self)
      vbox = wx.BoxSizer(wx.VERTICAL)

      hbox1 = wx.BoxSizer(wx.HORIZONTAL)
      hbox2 = wx.BoxSizer(wx.HORIZONTAL)

      self.gauge = wx.Gauge(pnl, range = 20, size = (250, 25), style =  wx.GA_HORIZONTAL)
      self.btn1 = wx.Button(pnl, label = "Start")
      self.Bind(wx.EVT_BUTTON, self.OnStart, self.btn1)

      hbox1.Add(self.gauge, proportion = 1, flag = wx.ALIGN_CENTRE)
      hbox2.Add(self.btn1, proportion = 1, flag = wx.RIGHT, border = 10)

      vbox.Add((0, 30))
      vbox.Add(hbox1, flag = wx.ALIGN_CENTRE)
      vbox.Add((0, 20))
      vbox.Add(hbox2, proportion = 1, flag = wx.ALIGN_CENTRE)
      pnl.SetSizer(vbox)

      self.SetSize((300, 200))
      self.Centre()
      self.Show(True)

   def OnStart(self, e):
      while True:
         time.sleep(1);
         self.count = self.count + 1
         self.gauge.SetValue(self.count)

         if self.count >= 20:
            print "end"
            return

ex = wx.App()
Mywin(None,'wx.Gauge')
ex.MainLoop()

上記のコードは、次の出力を生成します-

ゲージ出力