TL;DR
ソースコードはこちら!
はじめに
こんにちは!YomamaBananaです!
この記事は以前の記事の発展形です。
以前はPython開発する際に出くわすエラーを面白く表示しようぜ、について書きました。しかしその時のやり方はあまりにも単純すぎて、どこかで面白さが欠けていると感じました。
そこで今回は別の方法でエラーを面白く表示するチャレンジになります!
使用するツール
今回はasciimaticsというライブラリーを利用します。
asciimaticsとはterminalにいろんなものを表示したら、機能を追加したりするライブラリーです。
pip install asciimatics
画像データ
今回エラー表示に使う画像は下記の二つになります。
デモ
ソースコード
# 必要なライブラリーをimportする
from __future__ import division
from asciimatics.effects import BannerText, Print, Scroll
from asciimatics.renderers import ColourImageFile, FigletText, ImageFile
from asciimatics.scene import Scene
from asciimatics.screen import Screen
from asciimatics.exceptions import ResizeScreenError
import sys
# 笑顔EMOJIを用いたエラー
def simle_error(screen):
scenes = []
effects = [
BannerText(screen, ImageFile("img/simle.png", screen.height - 2, colours=screen.colours),
0, 0),
Print(screen,
FigletText(
"www ERROR www",
font='banner3' if screen.width > 80 else 'banner'
),
screen.height//2-3,
colour=Screen.COLOUR_RED, bg=7 if screen.unicode_aware else 0)
]
scenes.append(Scene(effects))
screen.play(scenes, stop_on_resize=True)
# 404エラー画像を用いたエラー
def error_404(screen):
scenes = []
effects = [
Print(screen,
ColourImageFile(
screen,
"img/404.png",
screen.height-2,
uni=screen.unicode_aware,
dither=screen.unicode_aware
),
0,
stop_frame=200)
]
scenes.append(Scene(effects))
screen.play(scenes, stop_on_resize=True)
# 自前のエラー関数
def CustomError(demo):
while True:
try:
Screen.wrapper(demo)
sys.exit(0)
except ResizeScreenError:
pass
if __name__ == "__main__":
try:
1 + "str"
except:
# エラーを発動させる
CustomError(error_404)
あとがき
今回はハードコーディングなく、スマートにエラー発生と予測するところに面白く表示することができました。
この記事の目的はあくまでエラーを面白く表示するであり、asciimaticsのたくさんの機能については触れませんでした。
asciimaticsには様々な機能が入っており、気になる人はぜひ試してみてください。
公式githubにはたくさんのsampleがありますので、ご参考までに!
前回と今回の記事を通して分かったことは、開発は楽しく面白くやっていこうぜとのことです。
開発者のみなさん、なろうとしているみなさん、楽しくやって行きましょう!