wxPython實現(xiàn)帶顏色的進(jìn)度條
本文實例為大家分享了wxPython實現(xiàn)帶顏色進(jìn)度條的具體代碼,供大家參考,具體內(nèi)容如下
【問題描述】
1、在使用wxpython創(chuàng)建進(jìn)度條時遇到如下問題,使用SetForegroundColour和SetBackgrounColour指令在Win7下不生效,即無法改變進(jìn)度條的顏色及其背景顏色。
2、查閱資料發(fā)現(xiàn)wx.lib.agw.pygauge可以實現(xiàn)進(jìn)度條顏色的修改(具體指令請參考pygauge說明文檔),但其顯示效果為平面較差(如下圖):
圖1-1 pygauge制作的進(jìn)度條
期望實現(xiàn)的進(jìn)度條效果如下:
圖1-2 期望效果圖
【程序代碼】
# --------------------------------------------------------------------------------- # # GAUGE wxPython # # Jin Jianchao, @ 25 Oct 2013 # Mail: jianchaojin@gmail.com # # End Of Comments # --------------------------------------------------------------------------------- # """ Description =========== Draw color gauge with wxpython Usage ===== Usage example:: import wx import Gauge class MyFrame(wx.Frame): def __init__(self, parent): wx.Frame.__init__(self, parent, -1, "ColourGauge Demo") panel = wx.Panel(self) gauge1 = Gauge.ColourGauge(panel, -1, size=(100, 25)) gauge1.setPercent(0.8) gauge1.setBarColour(wx.RED) gauge1.setBackgroundColour(wx.WHITE) gauge2 = Gauge.ColourGauge(panel, -1, size=(200, 50)) gauge2.setPercent(0.9) gauge2.setBarColour(wx.RED) gauge2.setBackgroundColour(wx.BLUE) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(gauge1, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 20) sizer.Add(gauge2, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 20) panel.SetSizer(sizer) sizer.Layout() # our normal wxApp-derived class, as usual app = wx.App(0) frame = MyFrame(None) app.SetTopWindow(frame) frame.Show() app.MainLoop() """ import wx import wx.lib.fancytext as fancytext class ColourGauge(wx.Panel): def __init__(self, parent,id, pos=wx.DefaultPosition, size=wx.DefaultSize): wx.Panel.__init__(self, id=id, parent=parent, pos=pos, size=size, style=wx.TAB_TRAVERSAL) # creat Gauge self.gauge = Gauge(self, id=-1, size=size) self.SetAutoLayout(True) lc = wx.LayoutConstraints() lc.top.SameAs(self, wx.Top, 0) #AsIs() lc.left.AsIs() lc.height.AsIs() lc.right.SameAs(self, wx.Right, 0) self.gauge.SetConstraints(lc) def setPercent(self, percent): self.gauge.setPercent(percent) def setBackgroundColour(self, colour): self.gauge.SetBackgroundColour(colour) def setBarColour(self, colour): self.gauge.color = colour def getBarColour(self): return self.gauge.color def setStep(self,step): self.gauge.step=step def makeStep(self): if self.gauge.percent>=1.: return self.gauge.percent+=self.gauge.step if self.gauge.percent>1.: self.gauge.percent=1. self.Refresh() self.Update() class Gauge(wx.Control): default_color = "GREEN" # "MAGENTA","BLUE" # "GREEN" "RED" "YELLOW" def __init__(self, parent,id,pos=wx.DefaultPosition,size=wx.DefaultSize): wx.Control.__init__(self, parent, id, pos, size) self.SetBackgroundColour(wx.WHITE) self.color= Gauge.default_color self.percent = 0.0 self.step = 0.0 wx.EVT_PAINT(self, self.OnPaint) def OnPaint(self, evt): dc = wx.PaintDC(self) dc.Clear() dc.BeginDrawing() dc.SetPen( wx.Pen(self.color,0) ) dc.SetBrush( wx.Brush(self.color) ) w,h = self.GetSizeTuple() dc.DrawRectangleRect((0,0,w*self.percent,h)) percentStr= "%d%%"% int(self.percent*100) tx, ty = fancytext.getExtent(percentStr, dc) dc.DrawText(percentStr, w/2-tx/2, h/2-ty/2) dc.EndDrawing() def setPercent(self,percent): if percent <0 or percent >1.: return self.percent = percent def setColor(self,color): self.color = color def getColor(self): return self.color def setStep(self,step): self.step=step def makeStep(self): if self.percent>=1.: return self.percent+=self.step if self.percent>1.: self.percent=1. self.gauge.Refresh() self.gauge.Update()
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
代碼總結(jié)Python2 和 Python3 字符串的區(qū)別
在本篇文章里小編給大家整理的是一篇關(guān)于Python2 和 Python3 字符串的區(qū)別以及實例代碼,需要的朋友們學(xué)習(xí)下。2020-01-01Python調(diào)用API接口實現(xiàn)人臉識別
本文主要介紹了Python調(diào)用API接口實現(xiàn)人臉識別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02python中scipy.stats產(chǎn)生隨機(jī)數(shù)實例講解
在本篇文章里小編給大家分享的是一篇關(guān)于python中scipy.stats產(chǎn)生隨機(jī)數(shù)實例講解內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。2021-02-02Python機(jī)器學(xué)習(xí)應(yīng)用之工業(yè)蒸汽數(shù)據(jù)分析篇詳解
本篇文章介紹了如何用Python進(jìn)行工業(yè)蒸汽數(shù)據(jù)分析的過程及思路,通讀本篇對大家的學(xué)習(xí)或工作具有一定的價值,需要的朋友可以參考下2022-01-01Jupyter notebook在mac:linux上的配置和遠(yuǎn)程訪問的方法
今天小編就為大家分享一篇關(guān)于Jupyter notebook在mac:linux上的配置和遠(yuǎn)程訪問的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-01-01