pyglet 版 Hello, world

前回 Visual Studio Code (これから VSCode と省略して書きますね)のインストールと Python の動作を確認したわけですが、python.jp にわかりやすいドキュメントが置いてあるのを見つけました。

Visual Studio Code でPython入門 【Windows編】: Visual Studio Code でPython入門 【Windows編】 – python.jp

今更ですけれど、最初からここを見れば良かったな。すごく丁寧にステップを追って書いてあるので、これなら迷わないと思います。実際に Python のプログラムの実行に入るのはこの辺から。

ターミナルで実行: Visual Studio Code でPython入門 【Windows編】 – python.jp

shift+Enter (シフトキーを押しながらエンターキー)を押すと、選択した部分がターミナルで実行されます

テキストを選択せずに shift+Enter を入力すると、カーソル行が実行されます

https://www.python.jp/python_vscode/windows/run/exec_in_terminal.html

VSCode はしばらく使っていますが、こんな機能は存在すら知りませんでしたよ。コードの一部だけ適当に書いて動作確認するのに便利そう。たまにはこういう初歩的なマニュアルに目を通すのも、新しい発見があって良いですね。

さて、いよいよ本題です。pyglet 版の Hello, world を写経してみます。

Writing a pyglet application — pyglet v2.0.14
import pyglet

window = pyglet.window.Window()
label = pyglet.text.Label('Hello, world',
                          font_name='Times New Roman',
                          font_size=36,
                          x=window.width//2, y=window.height//2,
                          anchor_x='center', anchor_y='center')

@window.event
def on_draw():
    window.clear()
    label.draw()

pyglet.app.run()

さらっと写すとこういう感じ。

  • Window を作る
  • 位置・サイズなどを指定して、text.Label を作る
  • Window のイベントループを書く
    • イベントループでは、window のクリアと label の描画を呼び出す
    • on_draw() なので、こう書いておくと描画するタイミングで呼んでくれるのですね

最後に、pyglet.app.run() と書くのがアプリケーションのメインとなる部分ですね。実行してみると、本当に何も問題なく、あっさりと動きました。簡単!

Hello, world & VSCode

せっかくフォントが出せたので、いろいろなフォントを順に書いてみることにしましょう。

適当に Windows のフォント名を列挙して、同じサイズで並べてみます。これも簡単ですね!

Hello, pyglet world!
import pyglet

title = 'Hello, pyglet world!'
WINDOW_WIDTH = 640
WINDOW_HEIGHT = 480
window = pyglet.window.Window(WINDOW_WIDTH, WINDOW_HEIGHT, title)

font_names = [
    'Arial',
    'Calibli',
    'Consolas',
    'Courier New',
    'Lucida Console',
    'Segoe UI',
    'Terminal',
    'Times New Roman',
]

labels = []

font_size = 32
x = window.width // 2
y = window.height - 100

for font_name in font_names:
    label = pyglet.text.Label('Hello, pyglet world!',
                              font_name=font_name,
                              font_size=font_size,
                              x=x, y=y,
                              anchor_x='center', anchor_y='center')
    labels.append(label)
    y -= font_size + 8

@window.event
def on_draw():
    window.clear()
    for label in labels:
        label.draw()

pyglet.app.run()
タイトルとURLをコピーしました