Files
Phoenix/demo/agw/PyGauge.py
2019-06-20 19:46:45 -05:00

163 lines
5.6 KiB
Python

#!/usr/bin/env python
import wx
import os
import sys
try:
dirName = os.path.dirname(os.path.abspath(__file__))
except:
dirName = os.path.dirname(os.path.abspath(sys.argv[0]))
sys.path.append(os.path.split(dirName)[0])
try:
from agw import pygauge as PG
except ImportError: # if it's not there locally, try the wxPython lib.
try:
import wx.lib.agw.pygauge as PG
except:
raise Exception("This demo requires wxPython version greater than 2.9.0.0")
class PyGaugeDemo(wx.Panel):
def __init__(self, parent, log):
wx.Panel.__init__(self, parent)
self.log = log
self.mainPanel = wx.Panel(self)
self.mainPanel.SetBackgroundColour(wx.WHITE)
self.gauge1 = PG.PyGauge(self.mainPanel, -1, size=(100,25),style=wx.GA_HORIZONTAL)
self.gauge1.SetValue(80)
self.gauge1.SetBackgroundColour(wx.WHITE)
self.gauge1.SetBorderColor(wx.BLACK)
self.gauge2 = PG.PyGauge(self.mainPanel, -1, size=(100,25),style=wx.GA_HORIZONTAL)
self.gauge2.SetValue([20,80])
self.gauge2.SetBarColor([wx.Colour(162,255,178),wx.Colour(159,176,255)])
self.gauge2.SetBackgroundColour(wx.WHITE)
self.gauge2.SetBorderColor(wx.BLACK)
self.gauge2.SetBorderPadding(2)
self.gauge2.Update([30,0],2000)
self.gauge3 = PG.PyGauge(self.mainPanel, -1, size=(100,25),style=wx.GA_HORIZONTAL)
self.gauge3.SetValue(50)
self.gauge3.SetBarColor(wx.GREEN)
self.gauge3.SetBackgroundColour(wx.WHITE)
self.gauge3.SetBorderColor(wx.BLACK)
self.backColour = wx.ColourPickerCtrl(self.mainPanel, colour=self.gauge3.GetBackgroundColour())
self.borderColour = wx.ColourPickerCtrl(self.mainPanel, colour=self.gauge3.GetBorderColour())
self.barColour = wx.ColourPickerCtrl(self.mainPanel, colour=self.gauge3.GetBarColour())
self.gaugeValue = wx.TextCtrl(self.mainPanel, -1, str(self.gauge3.GetValue()), style=wx.TE_PROCESS_ENTER)
self.gaugeRange = wx.TextCtrl(self.mainPanel, -1, str(self.gauge3.GetRange()), style=wx.TE_PROCESS_ENTER)
self.gaugePadding = wx.TextCtrl(self.mainPanel, -1, str(self.gauge3.GetBorderPadding()), style=wx.TE_PROCESS_ENTER)
self.DoLayout()
self.BindEvents()
def DoLayout(self):
frameSizer = wx.BoxSizer(wx.VERTICAL)
mainSizer = wx.BoxSizer(wx.VERTICAL)
colourSizer = wx.FlexGridSizer(2, 6, 1, 10)
label1 = wx.StaticText(self.mainPanel, -1, "Welcome to the PyGauge demo for wxPython!")
mainSizer.Add(label1, 0, wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 10)
mainSizer.Add(self.gauge1, 0, wx.ALL, 20)
mainSizer.Add(self.gauge2, 0, wx.ALL, 20)
mainSizer.Add(self.gauge3, 0, wx.ALL, 20)
labelBack = wx.StaticText(self.mainPanel, -1, "Background Colour")
labelHover = wx.StaticText(self.mainPanel, -1, "Border Colour")
labelText = wx.StaticText(self.mainPanel, -1, "Bar Colour")
labelValue = wx.StaticText(self.mainPanel, -1, "Gauge Value ")
labelRange = wx.StaticText(self.mainPanel, -1, "Gauge Range")
labelPadding = wx.StaticText(self.mainPanel, -1, "Border Padding")
colourSizer.Add(labelBack)
colourSizer.Add(labelHover)
colourSizer.Add(labelText)
colourSizer.Add(labelValue)
colourSizer.Add(labelRange)
colourSizer.Add(labelPadding)
colourSizer.Add(self.backColour, 0, wx.EXPAND)
colourSizer.Add(self.borderColour, 0, wx.EXPAND)
colourSizer.Add(self.barColour, 0, wx.EXPAND)
colourSizer.Add(self.gaugeValue, 0, wx.EXPAND)
colourSizer.Add(self.gaugeRange, 0, wx.EXPAND)
colourSizer.Add(self.gaugePadding, 0, wx.EXPAND)
mainSizer.Add(colourSizer, 0, wx.EXPAND|wx.LEFT|wx.RIGHT, 10)
boldFont = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
boldFont.SetWeight(wx.FONTWEIGHT_BOLD)
for child in self.mainPanel.GetChildren():
if isinstance(child, wx.StaticText):
child.SetFont(boldFont)
self.mainPanel.SetSizer(mainSizer)
mainSizer.Layout()
frameSizer.Add(self.mainPanel, 1, wx.EXPAND)
self.SetSizer(frameSizer)
frameSizer.Layout()
def BindEvents(self):
self.Bind(wx.EVT_COLOURPICKER_CHANGED, self.OnPickColour)
self.Bind(wx.EVT_TEXT_ENTER, self.OnEnter, self.gaugeValue)
self.Bind(wx.EVT_TEXT_ENTER, self.OnEnter, self.gaugeRange)
self.Bind(wx.EVT_TEXT_ENTER, self.OnEnter, self.gaugePadding)
def OnEnter(self,event):
obj = event.GetEventObject()
if obj == self.gaugeValue:
self.gauge3.SetValue(int(self.gaugeValue.GetValue()))
if obj == self.gaugeRange:
self.gauge3.SetRange(int(self.gaugeRange.GetValue()))
if obj == self.gaugePadding:
self.gauge3.SetBorderPadding(int(self.gaugePadding.GetValue()))
self.gauge3.Refresh()
def OnPickColour(self, event):
obj = event.GetEventObject()
colour = event.GetColour()
if obj == self.backColour:
self.gauge3.SetBackgroundColour(colour)
elif obj == self.borderColour:
self.gauge3.SetBorderColour(colour)
else:
self.gauge3.SetBarColour(colour)
self.gauge3.Refresh()
#----------------------------------------------------------------------
def runTest(frame, nb, log):
win = PyGaugeDemo(nb, log)
return win
#----------------------------------------------------------------------
overview = PG.__doc__
if __name__ == '__main__':
import sys,os
import run
run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])