5D_Heredero_Louis_TM2022/python/base.py

55 lines
1.5 KiB
Python
Raw Normal View History

2022-09-22 11:13:15 +00:00
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
This module provides a base class to display codes and enable saving
(C) 2022 Louis Heredero louis.heredero@edu.vs.ch
"""
import pygame
class Base:
def __init__(self, width, height, caption):
pygame.init()
pygame.display.set_caption(caption)
self.w = pygame.display.set_mode([width, height])
self.controls([
"CTRL + S: save as",
"ESC: quit"
])
def controls(self, controls, margin=2):
longest = max(list(map(len, controls))+[10])
print("┌─" + ""*(longest+margin) + "─┐")
_ = "\x1b[1;4mControls:\x1b[0m"
_ += " "*(longest+margin-9)
print(f"" + _ + "")
for c in controls:
print("" + " "*margin + c.ljust(longest) + "")
print("└─" + ""*(longest+margin) + "─┘")
def main(self):
pygame.display.flip()
stop = False
while not stop:
event = pygame.event.wait()
# ESC or close button -> quit
if event.type == pygame.QUIT:
stop = True
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
stop = True
# CTRL+S -> save image
elif event.key == pygame.K_s and \
event.mod & pygame.KMOD_CTRL:
self.save()
def save(self):
path = input("Save as: ")
pygame.image.save(self.w, path)