wxpython: statusbar + gauge
22 Novembre 2017
import wx import time class View(wx.Frame): def __init__(self, parent): self.parent = parent super(View, self).__init__(parent=self.parent) self.panel = wx.Panel(parent=self) self.SetSize((350, 100)) self.status_bar = self.CreateStatusBar(2) self.status_bar.SetStatusText('0/0') self.status_bar.SetStatusWidths([100, -1]) gauge_pos, gauge_size = self.get_gauge_dimensions() self.gauge = wx.Gauge (self.status_bar, -1, 100, gauge_pos, gauge_size) # bindings self.Bind(wx.EVT_SIZE, self.on_size) self.Show() def get_gauge_dimensions(self): """Get gauge position and dimensions""" pos_x, pos_y, dim_x, dim_y = self.status_bar.GetFieldRect(1) return (pos_x, pos_y), (dim_x, dim_y) def on_quit(self, event): self.Destroy() def on_size(self, event): """Resize gauge when the main frame is resized""" size = self.GetSize() self.SetSize(size) gauge_pos, gauge_size = self.get_gauge_dimensions() self.gauge.SetSize(gauge_size) event.Skip () self.Update() def set_range(self, value): """Set the range of gauge""" self.gauge.SetRange(value) def get_range(self): """Get the range of gauge""" return self.gauge.GetRange() def set_progress(self, value): """Set the indicator gauges progress""" self.gauge.SetValue(value) def set_status_text(self, value): """Set the indicator text gauges progress""" self.status_bar.SetStatusText(value) if __name__ == "__main__": app = wx.App(False) tot = 300 # maximum value for gauge v = View(parent=None) v.set_range(tot) for n in range(1, tot + 1): v.set_progress(n) time.sleep(.001) v.set_status_text('%s/%s' % (n, tot)) v.set_progress(0) app.MainLoop()
Commenti recenti