git-svn-id: http://moon:8086/svn/projects/HendiControl@253 fda53097-d464-4ada-af97-ba876c37ca34
This commit is contained in:
2019-04-22 11:19:04 +00:00
parent 8ecb9b2ace
commit e2543b39ad
2 changed files with 139 additions and 0 deletions
+47
View File
@@ -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()
+92
View File
@@ -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()