0
私はずっと簡単なプロジェクトをやっています。ここに私のハードウェアのセットアップは次のとおりです。Tkinterのメモリリーク
ラズベリーパイ3 16ギガバイトのSDカード/ wの
DHT11温度湿度センサーは
ラズベリーパイ7" 表示
私は、Python 2.7とAdafruit_DHTライブラリとのTkinterを使用しています。
は、コードは非常に基本的なものです
from Tkinter import *
import tkFont
import Adafruit_DHT
import sys
import time
temp = 0
win = Tk()
win.title("Temperature")
sans = tkFont.Font(family='FreeSansBold', size=28, weight=tkFont.BOLD)
Label(win, text="Temperature", relief=SUNKEN, width=15, font=sans).grid(row=0, column=0)
Label(win, text="Humidity", relief=SUNKEN, width=15, font=sans).grid(row=1, column=0)
Label(win, text="Date/Time", relief=SUNKEN, width=15, font=sans).grid(row=2, column=0)
def READ():
global temp
humidity, temperature = Adafruit_DHT.read_retry(11, 4)
temp = temperature*9/5.0 + 32
Label(win, text=temp, relief=RIDGE, width=15, fg="black", bg="white", font=sans).grid(row=0, column=1)
Label(win, text=humidity, relief=RIDGE, width=15, fg="black", bg="white", font=sans).grid(row=1, column=1)
Label(win, text=time.strftime("%b %d %I:%M"), relief=RIDGE, width=15, fg="black", bg="white", font=sans).grid(row=2, column=1)
def read_every_second():
READ()
win.after(1000, read_every_second)
win.after(1000, read_every_second)
mainloop()
それはメモリリークを引き起こすことを除いて、素晴らしい作品です。私はそれが「win.after(1000年、read_every_second)が呼び出すと無限ループを強制されていることを確信して、私はそれを修正する方法がわからない。
任意の助けをいただければ幸いです。それらに
読み取りごとに3つの新しいラベルを作成しています。古いものを変えてみませんか? –
ラベルのテキストを変更するには、[ラベル上のテキストを変更する](https://stackoverflow.com/questions/17125842/changing-the-text-on-a-label)または[Tkinterラベルのテキストを変更する方法ボタンを押す](https://stackoverflow.com/questions/29828477/how-to-change-tkinter-label-text-on-button-press) – Lafexlos
例を挙げることができますか? –