python有颜色进度条库_wxPython实现带颜色的进度条

本文介绍了如何在wxPython中实现彩色进度条,包括解决Win7环境下颜色设置无效的问题,以及通过wx.lib.agw.pygauge库创建进度条的方法。虽然pygauge库能实现颜色修改,但其显示效果不佳。作者提供了自定义的ColourGauge类来创建具有颜色的进度条,并给出了示例代码,展示了如何设置颜色和百分比。
摘要由CSDN通过智能技术生成

本文实例为大家分享了wxPython实现带颜色进度条的具体代码,供大家参考,具体内容如下

【问题描述】

1、在使用wxpython创建进度条时遇到如下问题,使用SetForegroundColour和SetBackgrounColour指令在Win7下不生效,即无法改变进度条的颜色及其背景颜色。

2、查阅资料发现wx.lib.agw.pygauge可以实现进度条颜色的修改(具体指令请参考pygauge说明文档),但其显示效果为平面较差(如下图):

20191119102436704.jpg

图1-1 pygauge制作的进度条

期望实现的进度条效果如下:

20191119102451995.jpg

图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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: wxPython实现带颜色的进度条

本文地址: http://www.cppcns.com/jiaoben/python/287273.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值