wx-fenster steuert soya-programm
Verfasst: Sonntag 13. April 2008, 22:02
mit 5 button im wx-pyton-fenster kann das sich drehende objekt im soay3d-fenster ferngesteuert werden(rechts,links,hoch, runter,close):
Code: Alles auswählen
# -*- indent-tabs-mode: t -*-
import sys, os, os.path, soya, soya.widget, wx, time
#soya.init("test",640,480)
soya.init("test",320,240)
soya.path.append(os.path.join(os.path.dirname(sys.argv[0]), "data"))
scene = soya.World()
modell=soya.Model.get("caterpillar_head")
head = soya.Body(scene,modell )
light = soya.Light(scene)
light.set_xyz(2.0, 5.0, 0.0)
camera = soya.Camera(scene)
camera.set_xyz(0.0, 15.0, 15.0)
camera.look_at(head)
soya.set_root_widget(soya.widget.Group())
soya.root_widget.add(camera)
#soya.root_widget.add(soya.widget.FPSLabel())
soya.MainLoop(scene)
head.y=-15.0
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,)
text.SetFont(wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD))
btn = wx.Button(panel, -1, "Close")
btn_h = wx.Button(panel, -1, "hoch")
btn_r= wx.Button(panel, -1, "runter")
btn_li = wx.Button(panel, -1, "links")
btn_re= wx.Button(panel, -1, "rechts")
self.Bind(wx.EVT_BUTTON, self.OnTimeToClose, btn)
self.Bind(wx.EVT_BUTTON, self.hoch, btn_h)
self.Bind(wx.EVT_BUTTON, self.runter, btn_r)
self.Bind(wx.EVT_BUTTON, self.links, btn_li)
self.Bind(wx.EVT_BUTTON, self.rechts, btn_re)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(btn, 0, wx.ALL, 5)
sizer.Add(btn_h, 0, wx.ALL, 5)
sizer.Add(btn_r, 0, wx.ALL, 5)
sizer.Add(btn_li, 0, wx.ALL, 5)
sizer.Add(btn_re, 0, wx.ALL, 5)
panel.SetSizer(sizer)
def OnTimeToClose(self, evt):
self.Close()
def OnTimer(self, evt):
head.rotate_x (2)
soya.MAIN_LOOP.update()
def hoch(self,evt):
head.y += 1
def runter(self,evt):
head.y -= 1
def links(self,evt):
head.x -= 1
def rechts(self,evt):
head.x += 1
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()