Wxpython-wx-gauge-class
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()
上記のコードは、次の出力を生成します-