欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 编程语言 > >内容正文

python

wxpython使用matplot-凯发k8官方网

发布时间:2024/9/3 27 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 wxpython使用matplot_测试怎么将matplotlib嵌入到wxpython中 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

展开全部

# -*- coding: utf-8 -*-

###############################################################################

#  wxmpl_test.pyw

#author: wu xuping

#date : 2013-09-15

#测试如何将matplotlib嵌入到wxpython中

###############################################################################

import numpy as np

import wx

import matplotlib

# matplotlib采用wxagg为后台,将matplotlib嵌入wxpython中

matplotlib.use("wxagg")

from matplotlib.backends.backend_wxagg import figurecanvaswxagg as figurecanvas

from matplotlib.figure import figure

from matplotlib.backends.backend_wx import navigationtoolbar2wx as navigationtoolbar

######################################################################################

class mpl_panel(wx.panel):

''''' #mpl_panel面板,可以继承或者e69da5e6ba903231313335323631343130323136353331333361313235创建实例'''

def __init__(self,parent):

wx.panel.__init__(self,parent=parent, id=-1)

self.figure = matplotlib.figure.figure(figsize=(4,3))

self.axes = self.figure.add_axes([0.1,0.1,0.8,0.8])

self.figurecanvas = figurecanvas(self,-1,self.figure)

#继承鼠标移动显示鼠标处坐标的事件

self.figurecanvas.mpl_connect('motion_notify_event',self.mplonmousemove)

self.navigationtoolbar = navigationtoolbar(self.figurecanvas)

self.statictext = wx.statictext(self,-1,label='show help string')

self.subboxsizer = wx.boxsizer(wx.horizontal)

self.subboxsizer.add(self.navigationtoolbar,proportion =0, border = 2,flag = wx.all | wx.expand)

self.subboxsizer.add(self.statictext,proportion =-1, border = 2,flag = wx.all | wx.expand)

self.topboxsizer = wx.boxsizer(wx.vertical)

self.topboxsizer.add(self.subboxsizer,proportion =-1, border = 2,flag = wx.all | wx.expand)

self.topboxsizer.add(self.figurecanvas,proportion =-10, border = 2,flag = wx.all | wx.expand)

self.setsizer(self.topboxsizer)

#显示坐标值

def mplonmousemove(self,event):

ex=event.xdata#这个数据类型是numpy.float64

ey=event.ydata#这个数据类型是numpy.float64

if ex  and ey :

#可以将numpy.float64类型转化为float类型,否则格式字符串可能会出错

self.statictext.setlabel('.5f,.5f' % (float(ex),float(ey)))

#也可以这样

#self.statictext.setlabel('%s,%s' % (ex,ey))

###############################################################################

#  mpl_frame添加了mpl_panel的1个实例

###############################################################################

class mpl_frame(wx.frame):

"""mpl_frame可以继承,并可修改,或者直接使用"""

def __init__(self,title="mpl_frame example in wxpython",size=(800,500)):

wx.frame.__init__(self,parent=none,title = title,size=size)

self.mpl = mpl_panel(self)

self.figure = self.mpl.figure

self.axes = self.mpl.axes

self.figurecanvas = self.mpl.figurecanvas

self.rightpanel = wx.panel(self,-1)

#测试按钮1

self.button1 = wx.button(self.rightpanel,-1,"testbutton",size=(100,40),pos=(10,10))

self.button1.bind(wx.evt_button,self.button1event)

#创建flexgridsizer

self.flexgridsizer=wx.flexgridsizer( rows=5, cols=1, vgap=5,hgap=5)

self.flexgridsizer.setflexibledirection(wx.both)

#加入sizer中

self.flexgridsizer.add(self.button1,proportion =0, border = 5,flag = wx.all | wx.expand)

self.rightpanel.setsizer(self.flexgridsizer)

self.boxsizer=wx.boxsizer(wx.horizontal)

self.boxsizer.add(self.mpl,proportion =-10, border = 2,flag = wx.all | wx.expand)

self.boxsizer.add(self.rightpanel,proportion =0, border = 2,flag = wx.all | wx.expand)

self.setsizer(self.boxsizer)

#mpl_frame界面居中显示

self.centre(wx.both)

#按钮事件,用于测试绘图

def button1event(self,event):

x=np.arange(-10,10,0.25)

y=np.cos(x)

self.axes.plot(x,y,'--b*')

self.axes.grid(true)

self.figurecanvas.draw()#一定要实时更新

########################################################################

#主程序测试

if __name__ == '__main__':

app = wx.pysimpleapp()

#frame = mpl2_frame()

frame =mpl_frame()

frame.center()

frame.show()

app.mainloop()

总结

以上是凯发k8官方网为你收集整理的wxpython使用matplot_测试怎么将matplotlib嵌入到wxpython中的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

网站地图