diese routine wird immer aufgerufen mit einer variablen : def test(v)
von dieser timer-routine ( alle 30ms):
def OnTimer(self, evt):
test(v)
soya.MAIN_LOOP.update()
hier werden die variablen gesetzt :
def vorwaerts(self,evt):
v=0.5
def rueckwaerts(self,evt):
v=-0.5
aber v bleibt bei der übergabe immer "0".
finde den fehler nicht.
wenn ich statt v eine zahl einsetze, geht es :
def OnTimer(self, evt):
test(0.5)
soya.MAIN_LOOP.update()
noch etwas, wenn ich die variable in der timerroutine vorher mit "v" setze, geht es auch:
def OnTimer(self, evt):
v=0.5
test(v)
soya.MAIN_LOOP.update()
Code: Alles auswählen
v=0
def test(v):
wuerfel.speed = soya.Vector(wuerfel, 0.0, 0.0, v)
wuerfel.add_mul_vector(2, wuerfel.speed)
class MyFrame(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, -1, title,pos=(15, 15), size=(150,300))
self.timer = wx.Timer(self)
self.Bind(wx.EVT_TIMER, self.OnTimer, self.timer)
self.timer.Start(30)
panel = wx.Panel(self)
text = wx.StaticText(panel, -1,"")
sizer = wx.BoxSizer(wx.VERTICAL)
text.SetFont(wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD))
buttons = [("Close", self.OnTimeToClose),
("vorwaerts", self.vorwaerts), ("rueckwaerts", self.rueckwaerts), ("links", self.links), ("rechts", self.rechts)]
for (name, action) in buttons:
btn = wx.Button(panel, -1, name)
self.Bind(wx.EVT_BUTTON, action, btn)
sizer.Add(btn, 0, wx.ALL, 5)
panel.SetSizer(sizer)
def OnTimeToClose(self, evt):
self.Close()
def OnTimer(self, evt):
test(v)
soya.MAIN_LOOP.update()
def vorwaerts(self,evt):
v=0.5
def rueckwaerts(self,evt):
v=-0.5
def links(self,evt):
wuerfel.rotate_y(5.0)
def rechts(self,evt):
wuerfel.rotate_y(-5.0)
class MyApp(wx.App):
def OnInit(self):
frame = MyFrame(None, "wx-soya")
self.SetTopWindow(frame)
frame.Show(True)
return True
app = MyApp(redirect=True)
app.MainLoop()