Пример #1
0
def main(window_width, window_height, square_dim, filename):

    window = GraphWin("Karnaugh Map", window_width, window_height)

    window.setBackground(color_rgb(255, 255, 255))

    for line in get_k_map_lines(window_width, window_height, square_dim):
        line.setWidth(1)
        line.setFill(color_rgb(0, 0, 0))
        line.draw(window)

    variables = [(chr(i), chr(i) + "'") for i in range(65, 91)]
    shuffle(variables)
    for label in get_k_map_variable_labels(window_width, window_height, square_dim, variables):
        label.setTextColor('black')
        label.setSize(30)
        label.draw(window)

    k_map_values = get_k_map_values()
    for text in get_k_map_text_values(window_width, window_height, square_dim, k_map_values):
        text.setTextColor('black')
        text.setSize(30)
        text.draw(window)
    # print(k_map_values)
    ps = window.postscript(colormode='color')
    img = Image.open(io.BytesIO(ps.encode('utf-8')))
    img.save(filename)

    window.close()
Пример #2
0
class View:
    """
    Will handle all functions necessary to provide a graphical representation of a World.
    """

    def __init__(self, world: World, title: str):
        """
        Creates a new View with a given World to represent.
        """
        self.world = world
        self.window = GraphWin(title, world.width, world.height, autoflush=False)
        self.rectangles = []
        self.vehicle = None
        self.camera = None

    def update(self, delta_t: float):
        """
        Redraws this View (call upon update in coordinates).
        """
        if self.vehicle:
            self.vehicle.move(self.world.vehicle.velocity[0] * delta_t, self.world.vehicle.velocity[1] * delta_t)
        
        if self.world.camera:
            #self.camera = Rectangle(self.world.camera.get_upper_left_corner(), self.world.camera.get_lower_right_corner())
            if self.camera:
                self.camera.undraw()
            upper_left_corner = self.world.camera.get_upper_left_corner()
            lower_right_corner = self.world.camera.get_lower_right_corner()
            self.camera = Rectangle(Point(upper_left_corner[0], upper_left_corner[1]), Point(lower_right_corner[0], lower_right_corner[1]))
            self.camera.setFill("green")
            self.camera.setOutline("green")
            self.camera.draw(self.window)
        else:
            if self.camera:
                self.camera.undraw()
            self.camera = None
        
        self.window.update()

    def add_feature(self, upper_left_corner: tuple, lower_right_corner: tuple, color: str):
        """
        Adds a feature to be drawn in this view.
        """
        self.rectangles.append(Rectangle(Point(upper_left_corner[0], upper_left_corner[1]), Point(lower_right_corner[0], lower_right_corner[1])))
        self.rectangles[len(self.rectangles) - 1].setFill(color)
        self.rectangles[len(self.rectangles) - 1].setOutline(color)
        self.rectangles[len(self.rectangles) - 1].draw(self.window)

    def set_vehicle(self, upper_left_corner: tuple, lower_right_corner: tuple, color: str):
        """
        Sets the location of the Vehicle.
        """
        self.vehicle = Rectangle(Point(upper_left_corner[0], upper_left_corner[1]), Point(lower_right_corner[0], lower_right_corner[1]))
        self.vehicle.setFill(color)
        self.vehicle.draw(self.window)

    def check_mouse(self):
        """
        Checks if a mouse button has been clicked during the previous frame.
        Returns the specific button if a button was clicked, or None if not button was pressed.
        """
        return self.window.checkMouse()

    def close_window(self):
        """
        Closes the window associated with this View.
        """
        self.window.close()

    def capture_png(self, name: str):
        """
        Records a postscript (similar to PDF) of the current graphical representation to the given file name.
        Converts this postscript to a png.
        """
        file_name = name + ".eps"
        self.window.postscript(file=file_name, colormode='color')
        img = Image.open(file_name)
        img.save(name + ".png", "png")