当前位置: 首页 > news >正文

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

本文实例为大家分享了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

相关文章:

  • python字典的一些操作_python 字典的一些操作
  • git 如何重新登录github_GitHub多账号管理
  • 解决python脚本连接终止问题_paramiko:自动终止远程启动的进程
  • eclipse ide for c/c++_重拾《 两周自制脚本语言 》- Eclipse插件实现语法高亮
  • eclipse启动springboot项目_教程:Systemctl启动SpringBoot项目
  • 非管理员用户使用iis_(七)使用管理员身份新增使用用户
  • php制作万年历的步骤_Excel 制作偶像万年历
  • 循环buffer的实现_用PHP实现高并发服务器
  • 统计一行文本的单词个数_【我爱背单词】从300万单词中给你一份3000英语新闻高频词汇...
  • hbase查询语句_Phoenix+Hbase二级索引
  • kafka源码_Kafka源码阅读之:日志段kafka.log.LogSegment
  • python怎么安装re模块_python模块模块re
  • java练习_java练习本(原每日一练)(20190429)
  • java 工厂模式_设计模式中的工厂模式,一文就能看懂(java实现)
  • redis 消息离线缓存_数据库缓存最终一致性的四种方案
  • [PHP内核探索]PHP中的哈希表
  • [译] React v16.8: 含有Hooks的版本
  • 〔开发系列〕一次关于小程序开发的深度总结
  • Android单元测试 - 几个重要问题
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • Angularjs之国际化
  • canvas绘制圆角头像
  • Cumulo 的 ClojureScript 模块已经成型
  • ES6简单总结(搭配简单的讲解和小案例)
  • Intervention/image 图片处理扩展包的安装和使用
  • Java 内存分配及垃圾回收机制初探
  • JavaScript中的对象个人分享
  • Java超时控制的实现
  • Mybatis初体验
  • Netty源码解析1-Buffer
  • Windows Containers 大冒险: 容器网络
  • 给初学者:JavaScript 中数组操作注意点
  • 盘点那些不知名却常用的 Git 操作
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • # 数据结构
  • (20050108)又读《平凡的世界》
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (TOJ2804)Even? Odd?
  • (附源码)计算机毕业设计高校学生选课系统
  • (九)c52学习之旅-定时器
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (区间dp) (经典例题) 石子合并
  • (转) ns2/nam与nam实现相关的文件
  • (转)EOS中账户、钱包和密钥的关系
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • *2 echo、printf、mkdir命令的应用
  • .net core Swagger 过滤部分Api
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET Framework 4.6.2改进了WPF和安全性
  • .Net Web项目创建比较不错的参考文章