wxPython通过按钮事件用另一个图形刷新图形

问题描述 投票:1回答:1

我设置了完整的GUI,并且已经设置了没有内容的地块。我有一个计算图内容所需的参数列表。

应该通过单击一个按钮来绘制图形。通过更改参数绘制不同的图形也是可能的。因此,单击按钮并绘制图形不应是一次性事件。

我在绘图中使用了matplot.figurecanvas,但任何替代方法也都很有帮助。

到目前为止,我尝试了许多不同的操作,但实际上没有任何作用。

有人可以帮忙吗?

python matplotlib plot wxpython
1个回答
0
投票

在按钮事件中,您必须清除图形,绘制新数据并重新绘制画布。

这是一个简单的示例:

import wx
import matplotlib
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
from matplotlib.figure import Figure

class MainFrame(wx.Frame): 
    def __init__(self): 
        wx.Frame.__init__(self, None, wx.NewId(), "Main") 
        self.sizer = wx.BoxSizer(wx.HORIZONTAL)
        self.figure = Figure(figsize=(1,2))
        self.axe = self.figure.add_subplot(111)
        self.figurecanvas = FigureCanvas(self, -1, self.figure)
        self.valueCtrl = wx.TextCtrl(self, -1, "")
        self.buttonPlot = wx.Button(self, wx.NewId(), "Plot")
        self.sizer.Add(self.figurecanvas, proportion=1, border=5,
                       flag=wx.ALL | wx.EXPAND)
        self.sizer.Add(self.buttonPlot, proportion=0, border=2, flag=wx.ALL)
        self.sizer.Add(self.valueCtrl, proportion=0, border=2, flag=wx.ALL)
        self.SetSizer(self.sizer)
        self.buttonPlot.Bind(wx.EVT_BUTTON, self.on_button_plot)

    def on_button_plot(self, evt):
        self.figure.set_canvas(self.figurecanvas)
        self.axe.clear()
        self.axe.plot(range(int(self.valueCtrl.GetValue())), color='green')
        self.figurecanvas.draw()

class MyApp(wx.App):
    def OnInit(self):
        frame = MainFrame()
        frame.Show(True)
        self.SetTopWindow(frame)
        return True

app = MyApp(0)
app.MainLoop() 

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.