亲爱所有热情的程序员,
我正在编程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.mftthreshold
或
self.SpinCtrl_times
或self.SpinCtrl_Y
已更改。
我希望任何人都可以告诉我如何使这成为可能。
感恩的问候, 丹尼尔
答案 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 )
感谢萨克森的罗尔夫的帮助。