micropython-st7789py-lcd-dr.../examples/proverbs/proverbs.py

99 wiersze
2.4 KiB
Python
Czysty Zwykły widok Historia

2023-11-30 01:56:48 +00:00
"""
proverbs.py
===========
.. figure:: ../_static/proverbs.jpg
:align: center
Test for TrueType write_font_converter.
Displays what I hope are chinese proverbs in simplified chinese to test UTF-8 font support.
The fonts were converted from True Type fonts using the
:ref:`write_font_converter.py<write_font_converter>` utility.
.. literalinclude:: ../../../examples/proverbs/make_proverbs_fonts.sh
.. note:: This example requires the following modules:
.. hlist::
:columns: 3
- `st7789py`
- `tft_config`
- `proverbs_20`
- `proverbs_30`
"""
import utime
import st7789py as st7789
import tft_config
import proverbs_20 as font20
import proverbs_30 as font30
tft = tft_config.config(tft_config.WIDE)
def color_wheel(WheelPos):
"""returns a 565 color from the given position of the color wheel"""
WheelPos = (255 - WheelPos) % 255
if WheelPos < 85:
return st7789.color565(255 - WheelPos * 3, 0, WheelPos * 3)
if WheelPos < 170:
WheelPos -= 85
return st7789.color565(0, WheelPos * 3, 255 - WheelPos * 3)
WheelPos -= 170
return st7789.color565(WheelPos * 3, 255 - WheelPos * 3, 0)
def main():
proverbs = [
"万事起头难",
"熟能生巧",
"冰冻三尺,非一日之寒",
"三个臭皮匠,胜过诸葛亮",
"今日事,今日毕",
"师父领进门,修行在个人",
"一口吃不成胖子",
"欲速则不达",
"百闻不如一见",
"不入虎穴,焉得虎子",
]
font = font20 if tft.width < 239 else font30
line_height = font.HEIGHT + 8
half_height = tft.height // 2
half_width = tft.width // 2
wheel = 0
while True:
for proverb in proverbs:
proverb_lines = proverb.split("")
half_lines_height = len(proverb_lines) * line_height // 2
tft.fill(st7789.BLACK)
for count, proverb_line in enumerate(proverb_lines):
half_length = tft.write_width(font, proverb_line) // 2
tft.write(
font,
proverb_line,
half_width - half_length,
half_height - half_lines_height + count * line_height,
color_wheel(wheel),
)
wheel = (wheel + 5) % 256
# pause to slow down scrolling
utime.sleep(5)
main()