画面をクリックするたびに処理を行うプログラム
情報ⅠでのPythonのプログラミング練習では,CUI(キャラクタユーザインタフェース)というキーボードで操作を行うプログラムを作成することが多いと思いますが,乱数を利用しておみくじのようなプログラムを作成したときには,マウスのクリック操作で何度も処理を実行したいと考える生徒もいると思われます。
本記事ではマウスで操作できるGUI(グラフィカルユーザインタフェース)のサンプルプログラムを紹介します。
<2024-08-18 追記ここから>
Python プログラミング練習(サンプルプログラム) - 勉強ボックス管理者ブログ で紹介したTurtleは,画面上に線を引くだけではなく文字を書くことができます。本記事のサンプルプログラムはこの機能を利用します。
<文字を表示するコード例>
from turtle import * write( "startは(0,0)の位置", align="left", font=("Arial", 10, "normal") ) goto(-150,100) write( "ペンの位置に文字を書く", align="left", font=("Arial", 10, "normal") ) goto(-50,-100) write( "サイズ変更", align="left", font=("Arial", 20, "normal") ) goto(-50,-130) write( "フォント変更", align="left", font=("BIZ UDP明朝 Medium", 20, "normal") ) goto(-250,-200) # 次の2つは重なって書かれる(ペンの位置は動かない) write( "1234", align="left", font=("Arial", 20, "normal") ) write( "5678", align="left", font=("Arial", 20, "normal") ) goto(-250,-230) # move="true" を指定すると,ペンは書いた文の右下隅に移動 write( "1234", move="true", align="left", font=("Arial", 20, "normal") ) write( "5678", move="true", align="left", font=("Arial", 20, "normal") ) done()
実行結果

<2024-08-18 追記ここまで>
サンプルプログラム「お題メーカー」
プログラムを実行すると,画面(アプリのウィンドウ)が表示され,画面をクリックするたびにリストの中の文字列をランダムに表示するプログラムです。
from turtle import * import random zenhan = ["カ行で始まる", "濁音で始まる", "一番好きな", "「ん」で終わる", "7文字以上の"] kouhan = ["生き物", "食べ物", "飲み物", "赤いもの", "スポーツ", "マンガのキャラクター"] def disp(x,y): clear() msg = random.choice(zenhan) + random.choice(kouhan) write( msg, align="center", font=("Arial", 24, "normal") ) return hideturtle() write( "画面をクリックしてください", align="center", font=("Arial", 24, "normal") ) onscreenclick(disp) done()
実行結果

・from turtle import *
タートルグラフィックを利用します。
clear() 画面表示をクリアします
write() 引数で指定した文字列をペンのある位置に描画します
※ font=で指定している数値を変更すると文字サイズが変わります
hideturtle() カメのカーソルを非表示にします
onscreenclick() 画面クリック時に引数で指定した関数を実行します
done() タートルプログラムの最後を示す命令
・import random
乱数を利用します
random.choice() 引数で指定したリストから要素を1つ選択して返します
ウィンドウサイズの指定などの工夫
「お題メーカー」を改造したサンプルプログラムです。
・ウィンドウタイトルの指定
・画面のサイズ,ペンの初期位置を指定
・初期画面に位置を変えて文字列を表示
from turtle import * import random zenhan = ["カ行で始まる", "濁音で始まる", "一番好きな", "「ん」で終わる", "7文字以上の"] kouhan = ["生き物", "食べ物", "飲み物", "赤いもの", "スポーツ", "マンガのキャラクター"] # 画面に文字列を表示する関数 def writemsg(msg): write( msg, align="center", font=("Arial", 24, "normal") ) return # お題をランダムに表示する関数 def disp(x,y): clear() writemsg( random.choice(zenhan) + random.choice(kouhan) ) return # 初期画面を表示する title("お題メーカー") setup(width=640, height=480, startx=0, starty=40) hideturtle() writemsg( "画面をクリックしてください" ) teleport(0,-40) writemsg( "お題を表示します" ) teleport(0,0) # 画面クリック時に実行する関数の指定 onscreenclick(disp) done()
実行結果

