スライダで温度調整

スライダで温度調整

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() #プログラムの強制終了