wxPython实现绘图小例子
本文实例为大家分享了wxPython绘图小例子的具体实现代码,供大家参考,具体内容如下
一个绘图的例子:
#!/usr/bin/envpython #-*-coding:utf-8-*- ''' Function:绘图 Input:NONE Output:NONE author:socrates blog:http://www.cnblogs.com/dyx1024/ date:2012-07-11 ''' importwx classPaintWindow(wx.Window): def__init__(self,parent,id): wx.Window.__init__(self,parent,id) self.SetBackgroundColour("Red") self.color="Green" self.thickness=10 #创建一个画笔 self.pen=wx.Pen(self.color,self.thickness,wx.SOLID) self.lines=[] self.curLine=[] self.pos=(0,0) self.InitBuffer() #连接事件 self.Bind(wx.EVT_LEFT_DOWN,self.OnLeftDown) self.Bind(wx.EVT_LEFT_UP,self.OnLeftUp) self.Bind(wx.EVT_MOTION,self.OnMotion) self.Bind(wx.EVT_SIZE,self.OnSize) self.Bind(wx.EVT_IDLE,self.OnIdle) self.Bind(wx.EVT_PAINT,self.OnPaint) defInitBuffer(self): size=self.GetClientSize() #创建缓存的设备上下文 self.buffer=wx.EmptyBitmap(size.width,size.height) dc=wx.BufferedDC(None,self.buffer) #使用设备上下文 dc.SetBackground(wx.Brush(self.GetBackgroundColour())) dc.Clear() self.DrawLines(dc) self.reInitBuffer=False defGetLinesData(self): returnself.lines[:] defSetLinesData(self,lines): self.lines=lines[:] self.InitBuffer() self.Refresh() defOnLeftDown(self,event): self.curLine=[] #获取鼠标位置 self.pos=event.GetPositionTuple() self.CaptureMouse() defOnLeftUp(self,event): ifself.HasCapture(): self.lines.append((self.color, self.thickness, self.curLine)) self.curLine=[] self.ReleaseMouse() defOnMotion(self,event): ifevent.Dragging()andevent.LeftIsDown(): dc=wx.BufferedDC(wx.ClientDC(self),self.buffer) self.drawMotion(dc,event) event.Skip() defdrawMotion(self,dc,event): dc.SetPen(self.pen) newPos=event.GetPositionTuple() coords=self.pos+newPos self.curLine.append(coords) dc.DrawLine(*coords) self.pos=newPos defOnSize(self,event): self.reInitBuffer=True defOnIdle(self,event): ifself.reInitBuffer: self.InitBuffer() self.Refresh(False) defOnPaint(self,event): dc=wx.BufferedPaintDC(self,self.buffer) defDrawLines(self,dc): forcolour,thickness,lineinself.lines: pen=wx.Pen(colour,thickness,wx.SOLID) dc.SetPen(pen) forcoordsinline: dc.DrawLine(*coords) defSetColor(self,color): self.color=color self.pen=wx.Pen(self.color,self.thickness,wx.SOLID) defSetThickness(self,num): self.thickness=num self.pen=wx.Pen(self.color,self.thickness,wx.SOLID) classPaintFrame(wx.Frame): def__init__(self,parent): wx.Frame.__init__(self,parent,-1,"PanitFrame",size=(800,600)) self.paint=PaintWindow(self,-1) if__name__=='__main__': app=wx.PySimpleApp() frame=PaintFrame(None) frame.Show(True) app.MainLoop()
测试:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。