忍者ブログ

設備のマニアどっとこむ

IoT開発、設備・DIYのブログ!

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

コメント

翻訳(Translate)

プロフィール

HN:
佐々木 雅史
性別:
男性
自己紹介:
2021年 ラズパイ、M5stackを用いたIoT開発を専門で受注するアルティメンテを設立。代表を務める。
・2020年ラズパイコンテスト優良賞受賞
・設備系資格多数(電験3種、消防設備士甲4、2級ボイラー技士、危険物乙4、電工2種、技術士補(電気・電子)、エネ電、フォークリフトなど)

AD

カレンダー

02 2024/03 04
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31