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!!
↓ちなみに購入したタッチパネルモニターはこれ