在wxpy中建立了一个窗口按钮,并且想通过单击事件,得到已有的函数图像。但是中间绑定的代码可能有点欠缺。
代码如下:
import wx
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__ (self,None,-1,title="沥青路面设计与验算",pos=(100,100), size=(700,600))
panel = wx.Panel(parent=self)
self.btn = wx.Button(panel,-1,label='OK',pos=(600,500)) #设置按钮
self.Bind(wx.EVT_BUTTON,self.draw,self.btn)
def draw(self,event): #事件处理
x = arange(-3.0, 3.0, 0.01)
y1 = 3+0*x
y2= 2+0*x
y3= 0+0*x
y4=x
y5=-3+0*x
self.axes.plot(x, y4)
self.axes.plot(x,y1)
self.axes.plot(x,y2)
self.axes.plot(x,y3)
self.axes.plot(x,y5)
self.axes.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)
self.figure = Figure()
self.axes = self.figure.add_subplot(221)
self.canvas = FigureCanvas(self, -1, self.figure)
self.sizer = wx.BoxSizer(wx.VERTICAL)
self.sizer.Add(self.canvas, 1, wx.LEFT | wx.TOP)
self.SetSizer(self.sizer)
self.Fit()
if __name__ == "__main__":
app = wx.App()
frm = MyFrame()
frm.Show()
frm.draw()
app.MainLoop()
del app
代码中间的一些语句顺序颠倒了,会导致没有定义或对象没有xxx属性的错误,修改如下,可以正常显示。
import wx
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, title="沥青路面设计与验算",
pos=(100, 100), size=(700, 600))
panel = wx.Panel(parent=self)
self.btn = wx.Button(panel, -1, label='OK', pos=(600, 500)) # 设置按钮
self.Bind(wx.EVT_BUTTON, self.draw, self.btn)
def draw(self): # 事件处理
x = np.arange(-3.0, 3.0, 0.01)
y1 = 3+0*x
y2 = 2+0*x
y3 = 0+0*x
y4 = x
y5 = -3+0*x
self.figure = plt.Figure()
self.axes = self.figure.add_subplot(221)
self.axes.plot(x, y4)
self.axes.plot(x, y1)
self.axes.plot(x, y2)
self.axes.plot(x, y3)
self.axes.plot(x, y5)
self.axes.grid(color='r', linestyle='--', linewidth=1, alpha=0.3)
self.canvas = FigureCanvas(self, -1, self.figure)
self.sizer = wx.BoxSizer(wx.VERTICAL)
self.sizer.Add(self.canvas, 1, wx.LEFT | wx.TOP)
self.SetSizer(self.sizer)
self.Fit()
if __name__ == "__main__":
app = wx.App()
frm = MyFrame()
frm.Show()
frm.draw()
app.MainLoop()
del app
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632