- added
git-svn-id: http://moon:8086/svn/projects/HendiControl@253 fda53097-d464-4ada-af97-ba876c37ca34
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/python3
|
||||
#from core import MouseEvent
|
||||
|
||||
import wx
|
||||
import colorsys as cs
|
||||
|
||||
class myGui(wx.Frame):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(myGui, self).__init__(*args, **kwargs)
|
||||
|
||||
self.InitUI()
|
||||
|
||||
def InitUI(self):
|
||||
|
||||
menubar = wx.MenuBar()
|
||||
fileMenu = wx.Menu()
|
||||
fileItem = fileMenu.Append(wx.ID_EXIT, 'Quit', 'Quit application')
|
||||
menubar.Append(fileMenu, '&File')
|
||||
self.SetMenuBar(menubar)
|
||||
|
||||
self.Bind(wx.EVT_MENU, self.OnQuit, fileItem)
|
||||
self.Bind(wx.EVT_MOUSE_EVENTS, self.onMouse)
|
||||
|
||||
self.SetSize((300, 200))
|
||||
self.SetTitle('Simple menu')
|
||||
self.Centre()
|
||||
|
||||
def OnQuit(self, e):
|
||||
self.Close()
|
||||
|
||||
def onMouse(self, e):
|
||||
wxm = wx.MouseEvent(e)
|
||||
rgb_f = cs.hsv_to_rgb(float(wxm.Position[0])/300, 1.0, float(wxm.Position[1])/200)
|
||||
color = wx.Colour(int(rgb_f[0]*255), int(rgb_f[1]*255), int(rgb_f[2]*255))
|
||||
self.SetBackgroundColour(color)
|
||||
|
||||
def main():
|
||||
|
||||
app = wx.App()
|
||||
ex = myGui(None)
|
||||
ex.Show()
|
||||
app.MainLoop()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
import time
|
||||
import abc
|
||||
|
||||
class Timer(object):
|
||||
def __init__(self, name='Timer', listener=None, mode='periodic'):
|
||||
self.name = name
|
||||
self.listener = listener
|
||||
self.isActive = False
|
||||
self.mode = 'periodic'
|
||||
self.interval = 0
|
||||
self.elapseTime = 0
|
||||
|
||||
def start(self, interval):
|
||||
now = time.time()
|
||||
self.interval = interval
|
||||
self.elapseTime = now + interval
|
||||
self.isActive = self.elapseTime > now
|
||||
pass
|
||||
|
||||
def stop(self):
|
||||
pass
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class TimerListener(abc.ABC):
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abc.abstractmethod
|
||||
def onTimer(self, timer):
|
||||
pass
|
||||
|
||||
class TimerManager(object):
|
||||
def __init__(self):
|
||||
self.timers = []
|
||||
pass
|
||||
|
||||
def registerTimer(self, timer):
|
||||
self.timers.append(timer)
|
||||
|
||||
def process(self):
|
||||
for timer in self.timers:
|
||||
now = time.time()
|
||||
if timer.isActive:
|
||||
if timer.elapseTime <= now:
|
||||
if timer.listener:
|
||||
if 'periodic' in timer.mode:
|
||||
timer.start(timer.interval)
|
||||
timer.listener.onTimer(timer)
|
||||
|
||||
def getMinTimeout(self):
|
||||
timeouts = []
|
||||
for timer in self.timers:
|
||||
now = time.time()
|
||||
if timer.isActive:
|
||||
timeout = max(0, timer.elapseTime-now)
|
||||
timeouts.append(timeout)
|
||||
|
||||
|
||||
minTimeout = min(timeouts)
|
||||
return minTimeout
|
||||
|
||||
if __name__ == '__main__':
|
||||
class Test (TimerListener):
|
||||
def __init__(self):
|
||||
self.timerMgr = TimerManager()
|
||||
self.timer200 = Timer('Timer 200', self)
|
||||
self.timer500 = Timer('Timer 500', self)
|
||||
self.timer1000 = Timer('Timer 1000', self)
|
||||
self.timerMgr.registerTimer(self.timer200)
|
||||
self.timerMgr.registerTimer(self.timer500)
|
||||
self.timerMgr.registerTimer(self.timer1000)
|
||||
|
||||
self.timer200.start(0.200)
|
||||
self.timer500.start(0.500)
|
||||
self.timer1000.start(1.000)
|
||||
pass
|
||||
|
||||
def onTimer(self, timer):
|
||||
print (timer)
|
||||
|
||||
def run(self):
|
||||
while(True):
|
||||
wait = self.timerMgr.getMinTimeout()
|
||||
time.sleep(wait)
|
||||
|
||||
self.timerMgr.process()
|
||||
|
||||
test = Test()
|
||||
test.run()
|
||||
|
||||
Reference in New Issue
Block a user