diff options
| author | Aaron Perley <aaron.perley@gmail.com> | 2016-10-09 15:43:35 -0400 |
|---|---|---|
| committer | Aaron Perley <aaron.perley@gmail.com> | 2016-10-09 15:43:35 -0400 |
| commit | f0cb39571e4ac16b6fab6b04c26e17897e61f9f5 (patch) | |
| tree | d4a72247777da30672dfc60ceb5b9b234ed37d0e | |
| parent | af7c04f2bde46c69e26b7a618d339136bd5e8c5b (diff) | |
| download | bridge-f0cb39571e4ac16b6fab6b04c26e17897e61f9f5.tar.zst | |
Update simulator to use pygame instead of tkinter
| -rw-r--r-- | DummyRig.py | 55 | ||||
| -rw-r--r-- | webapp/app/__init__.py | 2 |
2 files changed, 23 insertions, 34 deletions
diff --git a/DummyRig.py b/DummyRig.py index 093a655..732bbc9 100644 --- a/DummyRig.py +++ b/DummyRig.py @@ -1,29 +1,18 @@ -from Tkinter import * +import pygame +from pygame.locals import * import re import threading import time -def rgbToTkColor(r, g, b): - if not (0 <= r <= 1 and 0 <= g <= 1 and 0 <= b <= 1): - print "invalid r={}, g={}, b={}".format(r, g, b) - assert(False) - - r_hex = int(r * 0xFF) - g_hex = int(g * 0xFF) - b_hex = int(b * 0xFF) - return "#{:02x}{:02x}{:02x}".format(r_hex, g_hex, b_hex) - class DummyLight(object): WIDTH_PX = 8 HEIGHT_PX = 20 - def __init__(self, canvas): - self.canvas = canvas + def __init__(self): self.color = (0, 0, 0) def setRGBRaw(self, r, g, b): - self.color = (r, g, b) - self.canvas.itemconfig(self.rect_id, fill=rgbToTkColor(*self.color)) + self.color = (int(r*255), int(g*255), int(b*255)) class DummyRig(object): @@ -33,21 +22,18 @@ class DummyRig(object): self.margin = 5 def init(self): - self.root = Tk() - self.canvas = Canvas(self.root, - width=self.width*DummyLight.WIDTH_PX + self.margin*2, - height=self.height*DummyLight.HEIGHT_PX + self.margin*2) - self.canvas.pack() - self.root.resizable(width=0, height=0) + pygame.init() + self.screen = pygame.display.set_mode((self.width*DummyLight.WIDTH_PX + self.margin*2, + self.height*DummyLight.HEIGHT_PX + self.margin * 2)) + self.bg = pygame.Surface(self.screen.get_size()) + self.bg = self.bg.convert() + self.bg.fill((0, 0, 0)) + self.screen.blit(self.bg, (0, 0)) + pygame.display.flip() - self.lights = [[DummyLight(self.canvas) for _ in xrange(self.height)] + self.lights = [[DummyLight() for _ in xrange(self.height)] for _ in xrange(self.width)] - self.rootThread = threading.Thread(target=self.root.mainloop) - self.rootThread.start() - - self.initRects() - def select(self, pattern): match = re.search("\$side=(.*?)\[\$sequence=(.*?)\]", pattern) if match.group(1) == "bot": @@ -59,14 +45,19 @@ class DummyRig(object): return self.lights[x][y] def updateOnce(self): - pass + for event in pygame.event.get(): + if event.type == QUIT: + raise Exception + + self.screen.blit(self.bg, (0,0)) + self.drawRects() + pygame.display.flip() - def initRects(self): + def drawRects(self): for x in xrange(self.width): for y in xrange(self.height): light = self.lights[x][y] x0 = self.margin + x * DummyLight.WIDTH_PX y0 = self.margin + y * DummyLight.HEIGHT_PX - light.rect_id = self.canvas.create_rectangle(x0, y0, x0 + DummyLight.WIDTH_PX, - y0 + DummyLight.HEIGHT_PX, - width=1) + pygame.draw.rect(self.screen, light.color, + (x0, y0, DummyLight.WIDTH_PX, DummyLight.HEIGHT_PX)) diff --git a/webapp/app/__init__.py b/webapp/app/__init__.py index aa2e264..29cd22b 100644 --- a/webapp/app/__init__.py +++ b/webapp/app/__init__.py @@ -1,7 +1,5 @@ from flask import Flask import socketio -import eventlet -import eventlet.wsgi sio = socketio.Server(async_mode='threading') app = Flask(__name__) |
