忍者ブログ

設備のマニアどっとこむ

設備、電子工作、DIYのブログ!

02/25

Sun

2018

raspberry piで温度監視GUI (Tkinter編)

raspberry pi でちょっとしたGUIチャレンジしてみた。タッチパネルで監視とボタンだけの単純なものだがかなり苦労した。


今回PythonのTkinterというGUI用のモジュールを使ったのだけどPythonのバージョンでちょっと大文字、小文字違うとエラーが出たりと、プログラム初心者には厳しいところが多々あった。

といってもできてしまうとなんでもないので一例を紹介したいと思う。
温度はraspberry piの本体CPUから取得した。
import sys
import tkinter
from tkinter import Tk, ttk, PhotoImage
root = tkinter.Tk()
root.geometry("800x800")
canvas = tkinter.Canvas(root, width = 800, height = 800)
im = PhotoImage(file = 'on.gif')
im2 = PhotoImage(file = 'off.gif')
canvas.create_image(450,200,image = im2 ) 
def draw(event):
    
    def get_temp():
      f = open("/sys/class/thermal/thermal_zone0/temp","r")
      tmp = 0
      for t in f:
         tmp = t[:2]+"."+t[2:5]
      f.close()
      return float(tmp)
    if __name__=='__main__':
        temp = get_temp()
        print(str(temp))
    if  44>temp > 43 :
        canvas.create_line(90,180,90,160,100,170,90,180,tag="p4")
        canvas.delete("p2")
        canvas.delete("p")
        canvas.delete("p3")
    if 43 > temp > 42 :
        canvas.create_line(90,190,90,170,100,180,90,190,tag="p3")
        canvas.delete("p2")
        canvas.delete("p")
        canvas.delete("p4")
    if 42 > temp > 41 :
        canvas.create_line(90,200,90,180,100,190,90,200,tag="p")
        canvas.delete("p2")
        canvas.delete("p3")
        canvas.delete("p4")
    if 41 > temp > 40 :
        canvas.create_line(90,210,90,190,100,200,90,210,tag="p2")
        canvas.delete("p")
        canvas.delete("p3")
        canvas.delete("p4")
    if 40 > temp > 30 :
        canvas.create_line(90,220,90,200,100,210,90,220,tag="p3")
        canvas.delete("p")
        canvas.delete("p2")
        canvas.delete("p4")
    else :
        canvas.create_image(450,200,image = im2 ) 
def draw2(event):
     
        canvas.create_image(450,200,image = im )  
    
canvas.create_line(100,100,100,500,tag="o")
canvas.create_text(110,90, text = '温度')
canvas.create_text(115,110, text = '50')
canvas.create_text(115,160, text = '45')
canvas.create_text(115,210, text = '40')
canvas.create_text(115,260, text = '35')
canvas.place(x=0, y=0)
button_draw = tkinter.Button(root, text=u'温度',width=15)
button_draw.bind("<Button-1>",draw)
button_draw.place(x=100,y=0)
button_draw = tkinter.Button(root, text=u'on',width=15)
button_draw.bind("<Button-1>",draw2)
button_draw.place(x=350,y=0)
root.mainloop()

ちなみに同じディレクトリにon.gifとoff.gifを作成しなければならない。※jpgでは動作しないので注意。温度バーを作るときにもっといいやり方があるんだと思うけどif文で場合分けするので精一杯

ボタンを押すと・・。


ON!!
↓ちなみに購入したタッチパネルモニターはこれ





拍手[0回]

PR

Comment

お名前
タイトル
E-MAIL
URL
コメント
パスワード

翻訳(Translate)

AD

シェアしてね

プロフィール

HN:
アルティメット雅史
性別:
男性
自己紹介:
製油所、データセンター、化学工場を渡り歩いた設備のマニア
最近はarduinoあたりの電子工作にハマる。
取得資格は電験3種、消防設備士甲4、2級ボイラー技士、危険物乙4、電工2種、技術士補(電気・電子)、エネ電、フォークリフトほか

カウンター

お問い合わせ

忍者アクセスランキング

Copyright © 設備のマニアどっとこむ : All rights reserved

TemplateDesign by KARMA7

忍者ブログ [PR]