0
2

More than 1 year has passed since last update.

pyxelライブラリを使っていてpyo3_runtime.PanicExceptionが出てきたら

Last updated at Posted at 2022-02-07

エラーの確認の仕方

例えばPyxelの01_hello_pyxel.pyを動かそうとしたとします。
その時に以下のように改変していると

01_hello_pyxel_edit.py

import pyxel

class App:
    def __init__(self):
        pyxel.init(160, 120, title="Hello Pyxel")
        pyxel.image(0).load(0, 0, "assets/script.png")
        pyxel.run(self.update, self.draw)
    def update(self):
        if pyxel.btnp(pyxel.KEY_Q):
            pyxel.quit()
    def draw(self):
        pyxel.init(200, 200)
        pyxel.cls(0)
        pyxel.text(55, 41, "Hello, Pyxel!", pyxel.frame_count % 16)
        pyxel.blt(61, 66, 0, 0, 0, 38, 16)


App()

このようなエラーが出ます。

line 8, in __init__
    pyxel.run(self.update, self.draw)
pyo3_runtime.PanicException: Unwrapped panic from Python code

このエラーをそのままググるとRustとかの記事が出てきますが、これは簡単に治すことができます。

どうしてエラーが出たのか

これが出てくる理由は_def_draw_の部分に_pyxel.init_を入れてしまっているからです。このファイルの実行動作は_def_init_で_pyxel.run_を使って、_draw_と_update_を実行しています。そして_01_hello_pyxel_edit.py_ではdrawの中に_pyxel.init_を入れています。この状態では描画するたびに初期化を繰り返すのでエラーが出てます。

わかっていないこと

どうしてこのように_pyxel.run_で描画する際に初期化することでエラーが出てるのかはわかっていません。とりあえず何回も処理する部分には_pyxel.init_を入れない方が良さそうです。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2