Python独学ならTech-Joho TOP > いろいろやってみた >pygletを使ってPythonで絵を描く
pygletとは
pygletは、公式サイトによると、クロスプラットフォームなPythonでのウインドウやマルチメディア開発のためのライブラリです。
a cross-platform windowing and multimedia library for Python.
要は、ウインドウを出したり、画像や動画を表示させるアプリをつくるキットということです。
参考 pyglet公式
pyglet wiki
前に紹介したpygame と似ていますが、よりあとに作られたもののようです。
この記事では、pygletに、シンプルな図形を描画させてみます。
1.Pythonの実行環境の準備
pygletを利用するにあたって、Pythonを自分のパソコンにインストールする必要があります。
Pythonインストールの方法については、下の記事をご覧ください。
pygameを使ってPythonで絵を描く
2.pygletインストール
pygletのインストールは簡単で、pipコマンドを利用できます。
anaconda prompotや、comand prompt、power shell等の黒い画面で、下のコマンドを実行してください。
>>>pip install pyglet
下のように、”Successfully installed”と出たらインストール成功です。
略
Successfully installed future-0.16.0 pyglet-1.3.1
2018年3月8日時点では、バージョン1.3.1がインストールされました。
3.まずは絵を書いてみる
pygameの例 、kivyの例 と同じように矩形、長方形を描いてみましょう。
具体的には、横300px、縦200pxの長方形のウインドウを表示し、
左上から右に10px、下に10pxの位置に、幅20px、高さ50pxの縦長の長方形を描きます。
下の内容のファイルpyglettest.pyを作成して下さい。
pyglettest.py
import pyglet
window = pyglet.window.Window(300, 200)
window.set_caption('This is a pyglet sample')
quad = pyglet.graphics.vertex_list(4,
('v2f', [10, 190, 30, 190, 30, 140, 10, 140]),
('c3B', (255, 255, 0, 255, 255, 0,255, 255, 0,255, 255, 0,)))
@window.event
def on_draw():
quad.draw(pyglet.gl.GL_QUADS)
pyglet.app.run()
次に、ファイルを保存したディレクトリで下のコマンドを実行してください。
>>> python pyglettest.py
このような黄色い長方形が左上に表示された小さなウインドウが出てくるはずです。
このウインドウを消すには、”python pyglettest.py”を打ち込んだ黒い画面(ターミナル)でCtrl(コントロール)とZを同時に押して下さい。
私のPC(mac)では、その後もウインドウが残ってしまったので、強制終了してください。
4.解説
作成したコードの各部分の意味を解説していきます。
import pyglet
この部分では、pygletモジュールをインポートしています。
window = pyglet.window.Window(300, 200)
window.set_caption('This is a pyglet sample')
この部分では、ウインドウを作っています。
引数の300と200で、幅300ピクセル、高さ200ピクセルのウインドウを作っています。
これは変数windowに代入されています。
windowing
“window.set_caption(‘This is a pyglet sample’)”では、ウインドウ上部のタイトルを指定しています。
画像で確認してみて下さい。”This is a pyglet sample”がタイトルになっているはずです。
quad = pyglet.graphics.vertex_list(4,
('v2f', [10, 190, 30, 190, 30, 140, 10, 140]),
('c3B', (255, 255, 0, 255, 255, 0,255, 255, 0,255, 255, 0,)))
この部分では、画面に表示する内容を決めています。
pyglet.graphics.vertex_list関数は、座標のリストをつくります。
引数の4は、4つの点を作るという指定です。
次の引数の”(‘v2f’, [10, 190, 30, 190, 30, 140, 10, 140])”の、v2fは、その後のリストが、2つの値(x軸座標とy軸座標)の組であること、fつまりFloatで浮動小数点数であることを示しています。
つまり、その後の”10, 190, 30, 190, 30, 140, 10, 140″は、
x軸が10、y軸が190の点が一つ、x軸が30、y軸が190の点が一つ…という具合に長方形の4つの点の座標を指定しています。
ちなみに、pygletの座標系では、左上が原点のようです。
次の、”(‘c3B’, (255, 255, 0, 255, 255, 0,255, 255, 0,255, 255, 0,)))”のうち、c3Bは、その後のリストが、cつまりColorで色を表していて、
3Bつまり赤、緑、青の3つの数字の組で、Unsigned byte、0から255の数字で表されることを示しています。
Rつまり赤色とGつまり緑色が最大値を指定しているので、”255, 255, 0″は黄色です。
まとめると、黄色の長方形の色と座標を指定して変数quadに代入しています。
@window.event
def on_draw():
quad.draw(pyglet.gl.GL_QUADS)
ここでは、アプリが起動した後に、何を刷るかをon_draw関数の中で定義しています。
“quad.draw(pyglet.gl.GL_QUADS)”は、先程つくった四角形の色と座標の情報auadを使って、四角形を描いています。
pyglet.gl.GL_QUADSが四角形という指定です。
他にも、pyglet.gl.GL_LINESで線を指定できるなど、いろいろな図形を描けます。
詳しくはこちらをみてみましょう。
drawing-primitives
pyglet.app.run()
最後に、アプリを起動しているのがこの部分です。
Python独学ならTech-Joho TOP > いろいろやってみた >Kivyを使ってPythonで絵を描く
Kivyとは
KivyはPythonをつかってGUI(グラフィカルユーザインタフェース)を作成するためのライブラリです。
利用することで、絵を描くことも可能です。
参考
Kuvi 公式サイト
こちらのpygameを使った例 とほぼ同じように、矩形を描いてみましょう。
1.Pythonの実行環境の準備
Kivyは、このサイトでおなじみのブラウザ上の黒い欄、Brython Consoleでは動きません。
まず、自分のパソコンにインストールする必要があります。
詳しくは、こちらのページの「1.Pythonの実行環境の準備」の欄をご覧ください。
pygameを使ってPythonで絵を描く
2.Kibyのインストール
pipでKibyをインストールしましょう。
まず、Kivyをインストールする際は、Kiby本体以外に、いくつか事前にインストールが必要なものがあります。
ここでは、Macの場合のインストールを紹介します。
anaconda prompotや、comand prompt、power shellなどの、黒い画面で、下のコマンドを実行してください。
$ brew install pkg-config sdl2 sdl2_image sdl2_ttf sdl2_mixer gstreamer
特にエラーメッセージがでなければ成功です。
下のようなインストール結果の概要がたくさんでてきます。
==> Summary
🍺 /usr/local/Cellar/gstreamer/1.12.4: 394 files, 20.8MB
次に、Cythonをインストールします。
$ pip install Cython==0.26.1
成功すると下のようなメッセージがでてきます。
Successfully installed Cython-0.26.1
最後に、Kivy本体をインストールします。
$ pip install kivy
途中、しばらく時間がかかります。
下のようなメッセージが表示されればインストール成功です。
Successfully installed Kivy-xxxxx
なお、私の環境では、下のメッセージがでて、一旦Kivyのビルドに失敗しました。
Failed building wheel for kivy
このissueで言われているのと同じ症状のようでした。
https://github.com/kivy/kivy/issues/5468
そこで、下のコマンドで開発中の最新バージョンをインストールしました。
$ pip3 install https://github.com/kivy/kivy/archive/master.zip
最終的には成功しました。
Successfully installed Kivy-1.10.1.dev0
3.まずは絵を書いてみる
絵を書いてみましょう。
シンプルに四角形(矩形)を描いてみましょう。
こちらと全く同じように描いてみます。
pygameを使ってPythonで絵を描く
kivytest.py
from kivy.core.window import Window
Window.size = (300,200)
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import Color
from kivy.graphics import Rectangle
class MyApp(App):
title = 'This is kivy sample'
def build(self):
widget = Widget()
with widget.canvas:
Color(1, 1, 0)
Rectangle(pos=(10, 340), size=(20, 50))
return widget
MyApp().run()
次に、ファイルを保存したディレクトリで下のコマンドを実行してください。
>>> python kivytest.py
このような黄色い長方形が左上に表示された小さなウインドウが出てくるはずです。
このウインドウを消すには、右上のxを押して下さい。
4.解説
ソースコードのそれぞれの部分の意味を見ていきましょう。
from kivy.core.window import Window
Window.size = (300,200)
見てわかりやすく、ウインドウのサイズを幅300、縦200にしています。
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import Color
from kivy.graphics import Rectangle
必要なモジュールをインポートしています。APPとWidgetは、どのようなKibyプログラムでも必須です。
ColorとRectangleは、色付きの矩形(Rectanle)を描くために必要です。
class MyApp(App):
title = 'This is kivy sample'
Kivyでプログラムを作るには、何はともあれAppクラスか、それを継承したクラスのインスタンスを作る必要があります。
ここでは、Appクラスを継承したクラスをまずつくっています。
また、ウインドウ上部に表示するタイトルも指定しています。
def build(self):
widget = Widget()
with widget.canvas:
Color(1, 1, 0)
Rectangle(pos=(10, 340), size=(20, 50))
return widget
buildメソッドの中で、具体的に描く内容を指定します。
Widgetクラスのインスタンスを作詞し、with widget.canvasの中で、
Colorクラスのインスタンスで黄色を指定し、
Rectangleクラスのインスタンスで矩形を指定しています。
Colorクラスのコンストラクタの引数は、赤色、青色、緑色の割合で、1から0で指定します。
Rectangleクラスのコンストラクタの引数のposは描く場所、sizeは大きさを指定します。
ちなみに、Kivyの座標は左下が原点のようです。
MyApp().run()
最後に作ったMyAppクラスのrunメソッドの実行でウインドウを描画します。
Python独学ならTech-Joho TOP > いろいろやってみた >pygameを使ってPythonで絵を描く
pygameとは
pygameは、画像や音楽を含むプログラムを作りやすくするPythonのライブラリの一つです。
ゲームと言う名前が入っていますが、ゲームだけに限らず、マルチメディアなアプリを作ることができるそうです。
この記事では、pygameを使って簡単にお絵かきをしてみます。
参考 pygame公式
pygame
2.pygameインストール
pipでpygameをインストールしましょう。
anaconda prompotや、comand prompt、power shellなどの、黒い画面で、下のコマンドを実行してください。
>>>pip install pygame
下のように、”Successfully installed”と出たらインストール成功です。
>>>pip install pygame
Collecting pygame
Downloading pygame-1.9.3-cp36-cp36m-macosx_10_9_intel.whl (4.8MB)
100% |████████████████████████████████| 4.8MB 136kB/s
Installing collected packages: pygame
Successfully installed pygame
3.まずは絵を書いてみる
絵を書いてみましょう。
シンプルに四角形(矩形)を描いてみましょう。
下の内容のファイルpygametest.pyを作成して下さい。
pygametest.py
pygame.display.update()
import pygame
from pygame.locals import *
import sys
pygame.init()
screen = pygame.display.set_mode((300, 200))
pygame.display.set_caption("This is pygame sample")
while(True):
screen.fill((0,0,0,))
pygame.draw.rect(screen, (255,255,0), Rect(10,10,20,50))
pygame.display.update()
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
次に、ファイルを保存したディレクトリで下のコマンドを実行してください。
>>> python pygametest.py
このような黄色い長方形が左上に表示された小さなウインドウが出てくるはずです。
このウインドウを消すには、”python pygametest.py”を打ち込んだ黒い画面(ターミナル)でCtrl(コントロール)とCを同時に押して下さい。
4.解説
作成したコードの各部分の意味を解説していきます。
import pygame
from pygame.locals import *
import sys
この部分では、pygameモジュールなど、必要なモジュールををインポートしています。
pygame.init()
screen = pygame.display.set_mode((300, 200))
pygame.display.set_caption("This is pygame sample")
この部分では、ウインドウを作っています。
“pygame.display.set_mode((300, 200))”で、幅300ピクセル、高さ200ピクセルのウインドウを作っています。
これは変数screenに代入されています。
“pygame.display.set_caption(“This is pygame sample”)”では、ウインドウ上部のタイトルを指定しています。
“This is pygame sample”と表示されているのがわかると思います。
while(True):
screen.fill((0,0,0,))
pygame.draw.rect(screen, (255,255,0), Rect(10,10,20,50))
pygame.display.update()
この部分では、画面に表示する内容を決めています。
“while(True):”があるので、まず無限ループがつくられます。
その無限の繰り返しの中で、
“screen.fill((0,0,0,))”は背景を透明にします。
“pygame.draw.rect(screen, (255,255,0), Rect(10,10,20,50))”は、黄色の長方形を作っています。
参考
pygame.Rect
” (255,255,0)”が黄色を指定しています。
pygameでは、色を(R,G,B)を0から255で指定するので、(255,255,0)は、Rつまり赤色とGつまり緑色が最大値を指定しています。
光の三原色の合成を考えると、赤と緑で黄色になります。
参考
光の3原色による色の合成 – 東京高専情報工学科
“Rect(10,10,20,50))”の部分はRectanble、つまり矩形を作っています。
最初の10,10は矩形の左上の座標です。
後ろの20,50は、それぞれ矩形の幅と高さです。
まとめると、ウインドウの左上から右に10ピクセル、下に10ピクセルのところに、幅20ピクセル、高さ50ピクセルの矩形を描け、という命令になります。
while(True):
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
最後に、この部分は、pygameの作ったウインドウを終了することができるようにしています。
“python pygametest.py”を打ち込んだ黒い画面(ターミナル)でCtrl(コントロール)とCを同時に押す以外にも、
矩形が表示されているウインドウをクリックしたあと、Ctrl+Cを押しても終了することができます。
図形を描画する 人工知能に関する断創録
この続きの、更に高度なお絵かきの方法を追加していく予定です。
2019年度版のシラバスを検索してまとめた最新版が下のリンク先でこうかいされています。
2019年度版はこちら
インターネット上の情報を手動をピックアップ!
インターネット上でアクセス可能なシラバス情報を元に、Pythonについての授業がある大学をピックアップしてみました。
もちろん、全ての大学を網羅しているわけではありません。
また、随時情報を追加中です。
2018年度開講の講義・演習等に、Pythonを扱うと明記されている学校をピックアップしています。
早稲田大学
早稲田大学は、シラバスの検索システムに外部からアクセスすることができます。
サイトはこちらです。
早稲田大学シラバス検索システム
キーワード欄に”Python”を入力して検索したところ、2018年2月20日現在、36件がひっかかりましたが、開講年度が18年度は1件のみです。
ですが、おそらく2018年度も2017年度もそう変わりが無いと思われます。
Python自体の入門の授業は1つのみで、あとは何らかの学術のツールとしてPythonを利用しています。
自然言語処理や機械学習など、Pythonの使いみちとしてよくWeb上の記事に出てくる内容もありますが、
創造理工学研究科など、工学系の学部・研究科が開講する科目には、流体力学や電磁気学の解析用や、社会シミュレーション等、大学以外では見かけない内容もあります。
また、グローバルエデュケーションセンターや人間科学研究科等、理系ではない組織が開講する授業も1/3程度ありました。
慶応義塾大学
慶応義塾大学のシラバスはこちらにありました。
慶應義塾大学 講義要綱
講義要綱の欄にPythonといれて、すべてのキャンパスを選んで検索すると、2018年2月22日現在、5件の講義がでてきました。
こちらも2017年度分です。
内容としては、経済学部、および理学部の初歩的な演習や概論的な内容で、プログラミングをがっつり学ぶわけではないようです。
上智大学
上智大学のシラバスもオンライン検索が可能です。
シラバス(講義概要)検索
キーワード”python”で、検索した結果3件が該当しました。
こちらも、2017年の結果です。(2018年2月23日現在)
上智大学は文系のイメージがありますが、その通りにこれまでで最も少ない件数です。
授業の内容としては、全学向けのいわゆるアルゴリズムとデータ構造の授業、電気系の数値解析、宇宙核工学の修士課程の授業、となっており、理系での利用が主でした。
青山学院大学
青山学院大学も、シラバスを検索する機能が公開されていましたので、”python”で検索してみました。
青山学院大学 講義内容検索
全部で17件がヒットしました。(2017年度の結果、2018年3月8日現在)
理工学部情報テクノロジー学科と、経営システム工学科の授業が大半を占めます。
python自体というよりは、豊富な計算系のライブラリを生かした応用的な内容が主なようです。
また、教育人間科学部の心理学プログラミングなど、文系の内容も目を引きます。
明治大学
明治大学は、Oh-o! Meijiというシラバスの検索システムを持っています。
Oh-o! Meiji – 明治大学
キーワード(シラバス全文対象)の欄にpythonを入力した結果、5件がでてきました。(2018年2月27日現在)
一つは、理工学部の情報系の演習ですが、数値計算や自動ツイートなど、応用的な内容も含まれた比較的高レベルな演習に思われます。
あと2つ、理工系の大学院向けの授業があります。
さらに、駿河台の大学院商学研究科の院生向けの授業もあります。
文系でもPythonの利用が広がっているみたいですね。
日本大学
日本大学のシラバスのシステムは、外部からアクセスできますが、学部ごとに別れているようです。
その中から、工学系をピックアップしてpython関連の授業を探してみました。
理工学部
日本大学理工学部(2017年度)
なんと、検索結果は0件でした。
Pythonを明示的に使用する授業がありません。
ちなみに、C言語だと30件、Javaだと15件がひっかかります。
型付けのある、やや伝統的な、プログラミング言語を利用する方針のようです。
生産工学部
Campusmate(生産工学部)
生産工学部では、シラバスの本文検索ができませんでした。
なので、授業の名称で検索しましたが、少なくとも名前にpythonを含む授業は無いようです。(2017年度)
工学部
工学部のシラバスは、ログインが必要なシステム内でしか見られないと思いきや、ゲストユーザとして参照することができました。
日本大学工学部ポータルサイト
しかし、キーワード「python」で引っかかる授業はありませんでした。(2017年度)
ちなみに、「C言語」では16件です。
Pythonを使わないという傾向は日本大学の学部全体にあるようです。
つづく…
Python独学ならTech-Joho TOP > Python問題集 >変数への代入の練習問題(1)
問題
変数str_xに、文字列’tanuki’を代入せよ
下の欄に回答を入力し、「回答完了」を押して下さい!回答例が表示されます。
回答完了
ただいま、正解判定機能を試運転中です。
実行結果の例
今回は、問題の答えを入力して実行したとしても、入力された回答以外、何も表示されません。
回答例
答え合わせをしてみましょう。
str_x = 'tanuki'
解説
Pythonで変数に値を代入するには、
=を書いて、=の左に変数名を、=の右に代入する値を書きます。
下のような感じです。
変数名 = 代入する値
例えば、
変数aに1を代入するときは、このように書きます。
a = 1
こちらでおさらいしましょう。
変数に値を代入する方法(第4回 )