pimoroni-pico/micropython/examples/tufty2040/name_badge.py

72 lines
1.5 KiB
Python

from picographics import PicoGraphics, DISPLAY_TUFTY_2040
display = PicoGraphics(display=DISPLAY_TUFTY_2040)
WIDTH, HEIGHT = display.get_bounds()
display.set_backlight(1.0)
# Tufty constants
A = 7
B = 8
C = 15
UP = 22
DOWN = 6
LED = 25
WHITE = display.create_pen(255, 255, 255)
BLACK = display.create_pen(0, 0, 0)
RED = display.create_pen(200, 0, 0)
# Read name from file
try:
file = open("badge.txt", "r")
except OSError:
with open("badge.txt", "w") as f:
f.write("open badge.txt in thonny to edit badge :)")
f.flush()
file = open("badge.txt", "r")
name = file.readline()
file.close()
text_size = 12
text_x = 0
text_y = 100
# Clear the screen
display.set_pen(WHITE)
display.clear()
display.update()
# Draws a blank badge
def draw_badge():
display.set_pen(RED)
display.rectangle(0, 0, WIDTH, 60)
display.rectangle(0, HEIGHT - 20, WIDTH, 50)
display.set_pen(WHITE)
display.text("HELLO", 125, 5, 0, 3)
display.text("My name is:", 110, 35, 320, 2)
display.update()
def calculate_text_size():
global text_size
name_width = display.measure_text(name, text_size)
# Calculate the width of the text in pixels, adjusts according to the screen width
while name_width > 290:
text_size -= 1
name_width = display.measure_text(name, text_size)
# Calculate the margin to be applied on X
margin_x = (WIDTH - name_width) / 2
return int(margin_x)
draw_badge()
text_x = calculate_text_size()
display.set_pen(BLACK)
display.text(name, text_x, text_y, 300, text_size)
display.update()