スライダで温度調整
pygameには入力用の部品が用意されているので、それを使ってインタラクティブに変数を変化させることができる。
画面右上にスライダーを追加し、温度を調整できるようにしてみよう。
スライダ等のモジュール、pygame_widgets をインストールする。コマンドラインから
pip install pygame_widgets
リファレンス
https://pygamewidgets.readthed……ts/slider/
プログラムの書き換えは下記を参照
import pygame #モジュールpygameの読み込み import pygame_widgets #プログラムの先頭で pygame_widgets を読み込む from pygame_widgets.slider import Slider #slider の読み込み pygame.init() #pygameモジュールの初期化 screen = pygame.display.set_mode( (800,800) ) #ウィンドウの表示 #pygameの初期化の下に、スライダの定義を追加 slider = Slider(screen, 400, 20, 350, 20, min=10, max=800, step=1, handleColour=(0,0,255)) #表示先, x座標, y座標, 横幅, 縦幅, #min=温度の最小値, max=温度の最大値, step=温度の刻み値 #メインループを改造 while True: #無限ループ #温度調整部分 #メインの処理(分子の移動など) #スライダの処理 obj_temp = slider.getValue() #スライダから目標温度を読込み #目標温度を画面に表示 tstr = "Obj Temp %1.1f K" % (obj_temp) text1 = font1.render(tstr, True, (255, 255, 255)) #text1に文字列を出力 screen.blit(text1,(10,110)) #画面に表示 #display.update()の前に次の2行を追加 events = pygame.event.get() #イベントの読み込み pygame_widgets.update(events) #スライダの更新 pygame.display.update() #画面を更新 #プログラムの終了処理 #1行目のfor文の in の後を書き換え for event in events: #pygameからくるイベントを順に取り出す if event.type == QUIT: #もしイベントがQUITなら pygame.image.save(screen,"sim.png") #画面をpngファイルとしてセーブ pygame.quit() #pygameモジュールの終了 sys.exit() #プログラムの強制終了