From f0cb39571e4ac16b6fab6b04c26e17897e61f9f5 Mon Sep 17 00:00:00 2001 From: Aaron Perley Date: Sun, 9 Oct 2016 15:43:35 -0400 Subject: Update simulator to use pygame instead of tkinter --- DummyRig.py | 57 +++++++++++++++++++++----------------------------- webapp/app/__init__.py | 2 -- 2 files changed, 24 insertions(+), 35 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) - - self.lights = [[DummyLight(self.canvas) for _ in xrange(self.height)] + 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() 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__) -- cgit v1.3.1