wxPython - 关于特定参数更改的绘图更新

时间:2017-06-27 09:07:24

标签: python plot wxpython automatic-updates

亲爱所有热情的程序员,

我正在编程GUI以调查我的数据。这些数据显示在面板上的3D图中。 Plot在我点击按钮时在我的GUI上填充了准备好的FigureCanvas。 Plot函数从我的界面收集一些参数信息并创建。 我想通过使函数在参数更改时始终创建新图来自动化该过程。

我现在不仅无助。也许有一些我想念的东西。 我可以使用一些模块吗?或者是否有一种常见的方式来做这样的事情:

class MainFrame(wx.Frame):

def __init__(self, *args, **kwargs):
    super(MainFrame, self).__init__(*args, **kwargs) 

    self.InitUI()
    self.Show(True)

def InitUI(self):    
    print __doc__
    self.figure1 = Figure(figsize=(1,1))
    self.mft_plot = FigureCanvas(panel, -1, self.figure1)

    self.SpinCtrl_Y = wx.SpinCtrl(panel, value="0", size=(60,30), max = 10000) # Y
self.SpinCtrl_times = wx.SpinCtrl(panel, value="0",size=(100,30),min=-200, max=500) # time

    btn5 = wx.Button(panel, label = 'Create Vol. Image', pos = ((650), 10),
                     size = (150, 25))
    btn5.Bind(wx.EVT_BUTTON, self.OnPlotCreation)

def OnPlotCreation(self, e):
    print 'Waiting for time point..'


    t_enter = self.SpinCtrl_times.GetValue()
      # Transform time sample point to dimensional time point ..
    self.t_in_ms0 = t_enter * 1e3

    print 'Seleted time point is: %.2f ms' %self.t_in_ms0

    # Check for a threshold..
    threshold = self.mftthreshold.GetValue()

    self.figure1.clear()
    print 'Plot.'
    plotting.plot_stat_map( index_img( self.img, float(t_enter) ), figure = self.figure1, threshold= threshold, cut_coords=(self.SpinCtrl_Y.GetValue()),
                             annotate=True, title='t=%.2f ms' %self.t_in_ms0 )

对于一个简单的例子,我发布了这个,有点长的代码示例。我想要实现的目标是该功能在之后自动运行 self.mftthresholdself.SpinCtrl_timesself.SpinCtrl_Y已更改。

我希望任何人都可以告诉我如何使这成为可能。

感恩的问候, 丹尼尔

1 个答案:

答案 0 :(得分:0)

所以解决方案是:

class MainFrame(wx.Frame):

def __init__(self, *args, **kwargs):
    super(MainFrame, self).__init__(*args, **kwargs) 

    self.InitUI()
    self.Show(True)

def InitUI(self):    
    print __doc__
    self.figure1 = Figure(figsize=(1,1))
    self.mft_plot = FigureCanvas(panel, -1, self.figure1)

    self.SpinCtrl_Y = wx.SpinCtrl(panel, value="0", size=(60,30), max = 10000) # Y
    self.SpinCtrl_times = wx.SpinCtrl(panel, value="0",size=(100,30),min=-200, max=500) # time

    btn5 = wx.Button(panel, label = 'Create Vol. Image', pos = ((650), 10),
                     size = (150, 25))

    btn5.Bind(wx.EVT_BUTTON, self.OnPlot)
    ***self.SpinCtrl_times.Bind(wx.EVT_SPINCTRL , self.OnPlot)***

def OnPlotCreation(self, e):
    print 'Waiting for time point..'


    t_enter = self.SpinCtrl_times.GetValue()
      # Transform time sample point to dimensional time point ..
    self.t_in_ms0 = t_enter * 1e3

    print 'Seleted time point is: %.2f ms' %self.t_in_ms0

    # Check for a threshold..
    threshold = self.mftthreshold.GetValue()

    self.figure1.clear()
    print 'Plot.'
    plotting.plot_stat_map( index_img( self.img, float(t_enter) ), figure = self.figure1, threshold= threshold, cut_coords=(self.SpinCtrl_Y.GetValue()),
                             annotate=True, title='t=%.2f ms' %self.t_in_ms0 )

感谢萨克森的罗尔夫的帮助。