Python | PyQtGraph PyQt上でドット絵表示(バブルスライム)

PyQtGraph

Python PyQtGraph PyQt上で バブルスライム のドット絵を表示する方法を説明する。

完成イメージ

コード

  1. GraphicsLayoutWidgetのインスタンスを生成する。
  2. 画像を生成する。
  3. プロットを生成する。
  4. プロットに画像を追加する。
  5. 画像を上下反転する。
  6. 画像のアスペクト比を固定に設定する。
#!/usr/bin/env python3

import sys
from PyQt6.QtWidgets import QApplication, QWidget
import pyqtgraph as pg
import bubbleslime


class GuiWindow(QWidget):

    def __init__(self, parent=None):
        super().__init__(parent)
        self.画像を描画する()

    def 画像を描画する(self):
        self.graph = pg.GraphicsLayoutWidget(show=True)          # 1
        self.img = pg.ImageItem(bubbleslime.バブルスライムの画像())  # 2
        self.p = self.graph.addPlot()                            # 3
        self.p.addItem(self.img)                                 # 4
        self.p.getViewBox().invertY(True)                        # 5
        self.p.getViewBox().setAspectLocked(True)                # 6

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = GuiWindow()
    sys.exit(app.exec())

バブルスライムの画像データはbubbleslime.pyというファイルに持っている。

import numpy as np


def バブルスライムの画像():
    w = [255, 255, 255]
    g = [ 55, 155,  55]
    d = [ 33, 111,  33]
    k = [  0,   0,   0]
    バブルスライム = np.array(
        [
        [k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k],
        [k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k],
        [k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k],
        [k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k],
        [k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k], # 5
        [k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k],
        [k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k],
        [k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k],
        [k,k,k,k,k,k,k,k,k,k,k,k,k,g,g,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k],
        [k,k,k,k,k,g,k,k,k,k,k,k,k,g,g,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k], # 10
        [k,k,k,k,g,g,g,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k],
        [k,k,k,k,k,g,k,k,k,k,k,k,k,k,k,k,k,k,k,g,k,k,k,k,k,k,k,k,k,k,k,k],
        [k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,g,g,g,k,k,k,k,k,k,k,k,k,k,k],
        [k,k,k,k,k,k,k,k,k,k,g,k,k,k,k,k,k,k,k,g,k,k,k,k,k,k,k,k,k,k,k,k],
        [k,k,k,k,k,g,g,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k], # 15
        [k,k,k,k,k,g,g,k,k,k,k,k,k,k,d,d,d,d,k,k,k,k,g,k,k,k,k,k,k,k,k,k],
        [k,k,k,k,k,k,k,k,k,g,k,k,k,d,d,d,d,d,d,w,k,k,k,k,k,k,k,k,k,k,k,k],
        [k,k,k,k,k,k,k,k,k,k,k,k,d,d,w,d,w,d,d,w,w,k,k,k,k,k,k,k,k,k,k,k],
        [k,k,k,k,k,k,k,k,k,k,k,d,d,w,k,w,k,w,d,d,w,w,d,d,k,k,k,k,k,k,k,k],
        [k,k,k,k,k,k,k,k,k,d,d,d,d,d,w,d,w,d,d,d,d,d,d,d,g,d,d,k,k,k,k,k], # 20
        [k,k,k,k,k,k,k,d,g,d,d,d,k,d,d,d,d,d,k,d,d,d,d,g,g,g,d,d,k,k,k,k],
        [k,k,k,k,k,d,d,g,g,g,d,d,d,k,k,k,k,k,d,d,d,d,d,d,d,d,d,d,k,k,k,k],
        [k,k,k,k,k,k,k,d,d,d,d,g,d,d,d,d,d,d,d,d,d,d,d,d,d,d,k,k,k,k,k,k],
        [k,k,k,k,k,k,d,d,d,d,g,g,g,d,d,d,d,d,d,d,d,d,k,k,k,k,k,k,k,k,k,k],
        [k,k,k,k,k,k,k,d,d,d,d,d,d,d,d,d,d,d,k,k,k,k,k,k,k,k,k,k,k,k,k,k], # 25
        [k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k],
        [k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k],
        [k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k],
        [k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k],
        [k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k], # 30
        [k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k],
        [k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k]
        ]).transpose(1,0,2)

    return バブルスライム

まとめ

Python PyQtGraph PyQt上で バブルスライム のドット絵を表示する方法を説明した。

コメント