initial commit
This commit is contained in:
55
python/base.py
Normal file
55
python/base.py
Normal file
@@ -0,0 +1,55 @@
|
||||
#!/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)
|
||||
Reference in New Issue
Block a user