for ループで複数のタイマーを作成して開始したいと考えています。私のアプローチは次のとおりです。
import wx
trials = range(1, 3)
timers = range(7)
name = 'timer'
class TimersClass(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
panel = wx.Panel(self)
self.button1 = wx.Button(panel, label = 'Go')
self.Bind(wx.EVT_BUTTON, self.Timers, self.button1)
def Timers(self, event):
for trial in trials:
for timer in timers:
setattr(self, name + str(timer) + '_' + 'iteration' + str(trial), wx.Timer(self))
print name + str(timer) + '_' + 'iteration' + str(trial)
eval(name + str(timer) + '_' + 'iteration' + str(trial) + '.Start(' + str(timer * 1000, ) + ', OneShoot = True)')
self.Bind(wx.EVT_TIMER, self.Hi)
def Hi(self, event):
print 'Hi, bastard!'
app = wx.App()
frame = TimersClass(None)
frame.Center()
frame.Show()
app.MainLoop()
しかし、self.timers オブジェクトは作成されていないようです。
トレースバック (最新の呼び出しが最後): ファイル "Escritorio/iteration_timers.py"、24 行目、タイマー eval(name + str(timer) + '_' + 'iteration' + str(trial) + '.Start(' + str(timer * 1000, ) + ', OneShoot = True)') File "", line 1, in NameError: name 'timer0_iteration1' is not defined
このコードが実行されない理由を誰かが知っていますか、または別のアプローチがありますか?
どうもありがとう!!