Tkinterで温度・湿度・気圧などの情報を表示する

ラズパイにディスプレイをくっつけてセンサーの値を表示しようとした。
当初KIVYを選定していたが、Raspbean OS Version upをした際に動作しなくなったため、Tkinterに乗り換えた。

ただ表示するだけでなく、一定間隔で表示を更新したかったため、threadingも使用。
また、夜部屋の灯りを消したときに煌々と光られると困るため、時間帯による色調整も実施。
ラズパイ起動時にcrontabから起動したかったため、ディスプレイ指定も行う必要があった。os.environ['DISPLAY'] = ':0'

```display_tkinter.py
#!/usr/bin/env python3

import tkinter as tk
import tkinter.font as f
import threading
import os
import sensors
from datetime import datetime

# _get_temperature()等の関数は自分で用意すること

class GUI(tk.Frame):
    def __init__(self,master = None):
        super().__init__(master)
        self.master = master
        master.geometry("480x350")
        # master.configure(bg="black")
        master.tk_setPalette(background="black")
        master.title("Test")
        font1 = f.Font(size='35')

        self.test = tk.Frame(self.master)
        self.test.pack()
        self.labelTemp1 = tk.Label(self.test, fg='white', bg='black', font=font1)
        self.labelTemp1.pack()
        self.labelHumid1 = tk.Label(self.test, fg='white', bg='black', font=font1)
        self.labelHumid1.pack()
        self.labelPress = tk.Label(self.test, fg='white', bg='black', font=font1)
        self.labelPress.pack()
        self.labelLight = tk.Label(self.test, fg='white', bg='black', font=font1)
        self.labelLight.pack()
        self.labelTemp2 = tk.Label(self.test, fg='white', bg='black', font=font1)
        self.labelTemp2.pack()
        self.labelHumid2 = tk.Label(self.test, fg='white', bg='black', font=font1)
        self.labelHumid2.pack()

        self.timeEvent()# タイマー起動

    # タイマー起動用関数
    def timeEvent(self):
        th = threading.Thread(target=self.update)
        th.start()
        self.after(60000, self.timeEvent)

    # スレッド処理実体
    def update(self):
        data = _get_temperature()
        # print(data)
        self.labelTemp1["text"] = '気温 ' + str(data) + ' ℃'
        data = _get_humid()
        # print(data)
        self.labelHumid1["text"] = '湿度 ' + str(data) + ' %'
        data = _get_pressure()
        # print(data)
        self.labelPress["text"] = '気圧 ' + str(data) + ' hPa'
        data = _get_light()
        # print(data)
        self.labelLight["text"] = '照度 ' + str(data) + ' level'
        data = _get_temperature2()
        # print(data)
        self.labelTemp2["text"] = '気温2 ' + str(data) + ' ℃'
        data = _get_humid2()
        # print(data)
        self.labelHumid2["text"] = '湿度2 ' + str(data) + ' %'
        hour = datetime.now().hour
        if hour > 23 or hour < 7:
            self.labelTemp1["fg"] = 'gray'
            self.labelHumid1["fg"] = 'gray'
            self.labelPress["fg"] = 'gray'
            self.labelLight["fg"] = 'gray'
            self.labelTemp2["fg"] = 'gray'
            self.labelHumid2["fg"] = 'gray'
        else:
            self.labelTemp1["fg"] = 'white'
            self.labelHumid1["fg"] = 'white'
            self.labelPress["fg"] = 'white'
            self.labelLight["fg"] = 'white'
            self.labelTemp2["fg"] = 'white'
            self.labelHumid2["fg"] = 'white'

if __name__ == "__main__":
    os.environ['DISPLAY'] = ':0'
    gui = tk.Tk()
    app = GUI(master = gui)
    gui.attributes('-fullscreen', True)
    app.mainloop()

```