应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

wxPython自定义控件

  实战wxPython系列051
  前面系列文章中,我们介绍了wxPython提供各种的各种控件,在一般情况下可以满足我们开发应用的各种需求。但是在一些情况下,比如对按钮的美化,一个可以显示CPU占用率的控件等等。这首就需要自定义的控件,才能满足要求。
  自定义控件可以通过两种方式创建:一种是通过修改或增强现有控件,另一种是我们使用GDI直接创建。下面我们将分别演示采用这两种方式如何在wxPython中实现一个自定义控件。
  一、简单的超链接控件
  创建一个超链接控件,我们基于wx。lib。stattext。GenStaticText控件来构建它,控件的字体用蓝色显示。点击该控件时将调用默认浏览器打开指定的网址。importwxfromwx。lib。stattextimportGenStaticTextimportwebbrowserclassMyLink(GenStaticText):definit(self,args,kw):super(MyLink,self)。init(args,kw)self。font1wx。Font(11,wx。SWISS,wx。NORMAL,wx。BOLD,True,Verdana)self。font2wx。Font(11,wx。SWISS,wx。NORMAL,wx。BOLD,False,Verdana)self。SetFont(self。font2)self。SetForegroundColour(0000ff)self。Bind(wx。EVTMOUSEEVENTS,self。OnMouseEvent)self。Bind(wx。EVTMOTION,self。OnMouseEvent)defSetUrl(self,url):self。urlurldefOnMouseEvent(self,e):ife。Moving():self。SetCursor(wx。Cursor(wx。CURSORHAND))self。SetFont(self。font1)elife。LeftUp():webbrowser。opennew(self。url)else:self。SetCursor(wx。NullCursor)self。SetFont(self。font2)e。Skip()classSampleHyperlink(wx。Frame):definit(self,args,kw):super(SampleHyperlink,self)。init(args,kw)self。InitUi()defInitUi(self):self。SetTitle(实战wxPython:自定义控件演示)self。SetSize(400,240)panelwx。Panel(self)vboxwx。BoxSizer(wx。VERTICAL)hboxwx。BoxSizer(wx。HORIZONTAL)stGenStaticText(panel,label连接到Web站点:)st。SetFont(wx。Font(11,wx。FONTFAMILYSWISS,wx。FONTSTYLENORMAL,wx。FONTWEIGHTBOLD,False,Verdana))hbox。Add(st,flagwx。LEFT,border20)linkwidMyLink(panel,labelbing)linkwid。SetUrl(https:cn。bing。com)hbox。Add(linkwid,flagwx。LEFT,border20)vbox。Add(hbox,flagwx。TOP,border30)panel。SetSizer(vbox)self。Centre()defmain():appwx。App()sampleSampleHyperlink(None)sample。Show()app。MainLoop()ifnamemain:main()
  上面的例子中我们使用已有控件,没有绘制任何新的东西,做了一点修改,构建了一个超链接控件。fromwx。lib。stattextimportGenStaticTextimportwebbrowser
  导入我们需要的模块,webbrowser是python的标准模块,使用它在默认浏览器中打开超链接。self。SetFont(self。font2)self。SetForegroundColour(0000ff)
  修改控件中字体和字体的颜色ife。Moving():self。SetCursor(wx。Cursor(wx。CURSORHAND))self。SetFont(self。font1)
  如果鼠标移到链接上方时,我们显示文本下划线,并将鼠标设置为手型。elife。LeftUp():webbrowser。opennew(self。url)
  如果点击链接,将在默认浏览器打开超链接控件所关联的网址。
  图1:自定义超链接演示
  二、一个显示资源使用率的控件
  在一些应用中,会需要监测系统资源,温度,内存消耗,CPU使用率等等。如果仅单纯地使用文字(比如CPU60),则显得不那么直观,如果使用一定定制化的控件,以直观的图形方式来显示,则会更加一目了然。importwxclassMyCPU(wx。Panel):definit(self,parent):wx。Panel。init(self,parent,size(80,110))self。parentparentself。SetBackgroundColour(black)self。Bind(wx。EVTPAINT,self。OnPaint)defOnPaint(self,e):dcwx。PaintDC(self)dc。SetDeviceOrigin(0,100)dc。SetAxisOrientation(True,True)posself。parent。GetParent()。GetParent()。selrectpos5foriinrange(1,21):ifirect:dc。SetBrush(wx。Brush(075100))dc。DrawRectangle(10,i4,30,5)dc。DrawRectangle(41,i4,30,5)else:dc。SetBrush(wx。Brush(36ff27))dc。DrawRectangle(10,i4,30,5)dc。DrawRectangle(41,i4,30,5)classSampleMyCPU(wx。Frame):definit(self,args,kw):super(SampleMyCPU,self)。init(args,kw)self。InitUi()defInitUi(self):self。SetTitle(实战wxPython:自定义控件演示)self。SetSize(400,240)self。sel0panelwx。Panel(self)centerPanelwx。Panel(panel)self。cpuMyCPU(centerPanel)hboxwx。BoxSizer(wx。HORIZONTAL)self。sliderwx。Slider(panel,valueself。sel,maxValue100,size(1,100),stylewx。VERTICALwx。SLINVERSE)self。slider。SetFocus()hbox。Add(centerPanel,0,wx。LEFTwx。TOP,20)hbox。Add(self。slider,0,wx。LEFTwx。TOP,30)self。Bind(wx。EVTSCROLL,self。OnScroll)panel。SetSizer(hbox)self。Centre()defOnScroll(self,e):self。sele。GetInt()self。cpu。Refresh()defmain():appwx。App()sampleSampleMyCPU(None)sample。Show()app。MainLoop()ifnamemain:main()
  上面的例子里,我们创建一个控件,它继承自wx。Panel。在其上绘制了一些矩形,矩形的颜色取决于滑块控件的值,可以为深绿或者亮绿。dc。SetDeviceOrigin(0,100)dc。SetAxisOrientation(True,True)
  上面的例子里,我们创建一个控件,它继承自wx。Panel。在其上绘制了一些矩形,矩形的颜色取决于滑块控件的值,可以为深绿或者亮绿。dc。SetDeviceOrigin(0,100)dc。SetAxisOrientation(True,True)
  将坐标系设置为笛卡尔坐标系,让绘制更加直观。posself。parent。GetParent()。GetParent()。selrectpos5
  获取sizer的值。一列有20个小矩形,滑块的变化范围为0到100。rect参数保存将滑块值转变成需要用亮绿色绘制的矩形数目。foriinrange(1,21):ifirect:dc。SetBrush(wx。Brush(075100))dc。DrawRectangle(10,i4,30,5)dc。DrawRectangle(41,i4,30,5)else:dc。SetBrush(wx。Brush(36ff27))dc。DrawRectangle(10,i4,30,5)dc。DrawRectangle(41,i4,30,5)
  这里我们绘制了40个矩形,每列20个。如果矩形数目大于rect的值,用暗绿色绘制,否则用亮绿色绘制。
  图2:自定义控件之CPU占用率演示
  三、本文知识点什么时候需要自定义控件。创建自定义控件的两种方式。使用EVTPAINT事件。
  前一篇:wxPython动态添加和删除控件
  欢迎关注,评论,收藏,点赞,和转发。

施瓦辛格靠外家上位,和胖保姆出轨20年,私生子只比亲生子大五在美国的加州,流传着这样一段传说:这个世界,没有人比加州州长更会演戏,也没有任何一个演员,拥有加州州长的权利。这段传说的原因,是因为当时担任加州州长的人,是赫赫有名的施瓦……豪爽豪迈的男宝宝,适合这些赏心悦目的名字家人们为宝宝起名一方面想要能够体现父母希望孩子平安喜乐、福瑞之气绵长的盼望,另一方面也希冀孩子聪明睿智、才华横溢、风趣儒雅,在人生之路上顺利、安康地走向成功。我们为各位父母准备……杀手锏失效,张帅首盘抢7告负无缘决赛!2数据揭示对手有多么可北京时间2022年9月24日上午11时,东京网球公开赛进入半决赛,中国一姐张帅对阵俄罗斯一姐萨姆索诺娃。双方在8强中分别击败了强大对手马尔蒂奇和穆古鲁扎,尤其张帅首胜对手,让人……央视主播邢质斌28年0失误,退休后被疑晚节不保她做了什么《新闻联播》开播44年来,陪伴过无数观众了解国内外的时事新闻。每到晚上七点,电视机中传来熟悉的旋律和声音,我们就知道今天的主播是谁了。这些耳熟能详的声音,对于观众的……iOS专题iOS16。2正式版来了,你的手机能升级吗2022年12月14号,苹果正式向用户推出了全新的iOS16。2正式版本。这个版本作为很多用户比较期待的大版本的跨越,让我们猜测这款系统它是否会给我们带来一些不一样的体验,我们……sanag塞那X6S暖冬系列无线户外蓝牙音箱,高颜值蓝牙音箱俗话说得好读万卷书,不如行万里路。只有走出去,我们才能得到更多信息,学习到更多东西。有条件的我们可以远途旅行,条件不允许的也可以短途旅行。三五好友在一起聚会,谈谈心,聊聊天,都……OPPO马里亚纳MariSiliconY自研芯片亮相,用于蓝IT之家12月13日消息,OPPO此前宣布第二颗自研芯片将于12月14日在未来科技大会2022(OPPOINNODAY2022)上正式发布。在发布之前,OPPO印度官方已……广西工业振兴特派员助企纾困激发发展活力为企业把脉问诊、解决企业急难愁盼问题、推动惠企政策落地近日,许多广西工业振兴特派员活跃在当地生产发展一线。在广西柳州市鹿寨县柳化泰润新材料有限公司的生产车间内,数条生产线……又大又白谁不爱?七彩虹Z790GAMINGFROZENDDR随着Intel发布了万众期待的十三香系列CPU闪亮登场,同步推出的Z790主板,也随之迎来了各品牌的一大波产品。今天评测的主角就是来自国内硬件巨头七彩虹科技。七彩虹这个国……快递保价屡登热搜问卷数读谁是消费者心中寄递新卷王?双11如约而至,寄递需求激增,作为快递行业最重要的年末节奏,今年在头部企业的带领下,整个快递市场正在发生一系列变化。最为明显的是在更细枝末节的寄递服务上的打磨与出新,新一轮的鲶……看了69岁的赵雅芝才发现中年女人穿得花花绿绿,照样优雅有气质从骨子里都散发出来的魅力,从来不会因为年龄而产生品味的壁垒,娱乐圈中从来不缺这样品味与魅力双在的女性,而在这其中独树一帜的绝对要数赵雅芝莫属了,已经69岁的赵雅芝依然有着非常高……卡塔尔世界杯,中国制造的轮回11月,世界杯开幕前夕的卡塔尔,暑意已经消散。6740公里外的中国义乌,备战世界杯的工厂、卖家和品牌则忙得热火朝天。自加入中国WTO以来,中国制造未曾缺席历届世界杯。从2……
不可思议的无轮毂电动车,空心车轮怎么骑?不愧是自行车界特斯拉世界上第一辆电动车诞生于1881年,是由法国工程师古斯塔夫特鲁夫发明的。发展至今,已经衍生出多种电力驱动的车。但是你见过没有轮毂的电动车吗?这种电动车该怎么骑呢?这款外形……老话七活八不活有确实依据吗民间有俗语说七活八不活,也就是如果孩子在7个月时早产了,是能活下来的,反而在8个月时早产的并不容易活下来。这也是很多老人口口相传的真理,但真的是这样吗?其实七活八不活的说……素食健康饮食?真相没那么简单近年来,素食越来越受到关注,素食常常都和健康饮食联系在一起,研究发现,素食可以帮助我们控制超重和肥胖,降低高血压、缺血性心脏病、癌症、糖尿病、憩室病和白内障等疾病的风险,是一种……110!陈梦发狠,马龙迷妹被打蒙,奥运双冠王的确太强了文篮郭先生WTT新加坡大满贯比赛继续进行,如今来到了四分之一决赛的舞台,陈梦的对手是石川佳纯。这样的对决,从颜值的角度来看,还是蛮高的。最终,陈梦以总比分31击败了石川佳……花终将落俗但浪漫至死不渝。我承认我还放不下你,但是我不会再奔向你了,分开的这段时间,其实我一直在赌,赌你会来找我,赌你忘不掉我,我拿我自己在你心中的分量来做赌注,结果是我输得体无完肤,你应该要庆幸,我所……不是夫妻关系可以入住酒店房间吗?前台懂得这几点规矩就行时代在不断发展的今天,人们需要出差或者是有事外出游玩的时候,会事先在网上订购酒店。(此处已添加小程序,请到今日头条客户端查看)只是有些小伙伴在去酒店登记入住的时候,可能会……体内有没有血栓,该如何知晓?手脚出现3种异样,可马虎不得现如今人们的生活条件越来越好,许多曾经被认为是老年人疾病的疾病正变得越来越年轻态。三高和各种血栓等疾病是我们过去通常认为的老年人才会患的疾病。但是在如今的生活中很多年轻人……微软再次提醒IE浏览器将在今年6月退役,请使用EdgeIT之家3月18日消息,我们已经知道IE浏览器将在今年退役,微软想确保每个人都知道这件事。该公司在Windows消息中心发布了一个新的警告,专门提醒用户IE浏览器将于今年6月退……新车有望4月19日亮相,内饰照搬EQS!奔驰EQSSUV内饰文:懂车帝原创周桐〔懂车帝原创产品〕奔驰近年来进军新能源市场的脚步逐渐加快,而在2022年其也将正式带来EQSSUV车型。近日,奔驰官方也正式发布了EQSSUV内饰官图。……7分钟2次打停掘金,76人梦幻开局,恩比德爆发,约基奇填满数NBA常规赛的比赛继续进行,76人对阵掘金的比赛,一场万众瞩目的比赛,今天的比赛对于76人来说考验不小,因为昨天他们经历了一场加时的晋战险胜魔术,背靠背面对势力强大的掘金,体力……内向不是缺陷,而是一种与众不同的能力生活中你是否常听到过类似这样的话:这孩子胆子小,不爱说话,要多带出去交流。这孩子太老实,没人家灵活。你是否还听到过类似这样的话:这孩子活泼开朗,招人稀罕。这孩子嘴巴甜,聪……前女排国手33岁近况嫁2米篮球硬汉继承父业,与儿子亲亲太幸福北京时间3月15日,前女排国手王茜近日通过社交媒体晒出一组近照,刚刚度过自己33岁生日的她向球迷们展示了自己在退役后的幸福生活。从照片可以看到,王茜手捧鲜花对着镜头露出甜……
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网