2016-04-07 8 views
1

Ich habe in den letzten paar Stunden versucht, eine Möglichkeit, ein Etikett mit Informationen zu aktualisieren, ohne selbst etwas eingeben.Machen Sie tkinter Etikett aktualisieren in festgelegten Zeitintervallen ohne Eingabe

Das Programm, das ich versuche zu schreiben, nimmt die CPU-Temperatur vom Raspberry Pi und zeigt es in einem Fenster an. Ich muss diese Temperatureingabe alle 5 Sekunden aktualisieren, aber alle Versuche sind fehlgeschlagen. Ich habe versucht, while-Schleifen und festgestellt, dass sie nicht innerhalb von tkinter arbeiten, und ich kann nicht denken, wie man etwas konstant ohne Eingabe ohne eine aktualisieren. Ich bin ziemlich neu in Python, also bin ich mir sicher, dass es einen Weg gibt und ich bin noch nicht darauf gestoßen. Ähnliche Fragen hier führen nicht ganz zu einer Antwort, die für mich gilt.

Hier ist mein Stück Code jetzt:

import subprocess 
from tkinter import * 

root = Tk() 
root.title('CPU Temp') 

cpuLab = Label(root, text = 'CPU Temp:', 
       font =('Nimbus Mono L',14,), 
       bg = 'black', fg = 'green').grid(row = 0, column = 0) 

cpuTemp = subprocess.check_output(['/opt/vc/bin/vcgencmd', 'measure_temp']) 

cpuVar = StringVar() 
cpuDisplay = Label(root, textvariable = cpuVar, 
        font =('Nimbus Mono L',14), 
        bg = 'black', fg = 'green').grid(row = 0, column = 1) 
cpuVar.set(cpuTemp[5:11]) 

root.mainloop() 

Dies funktioniert perfekt für die Temperatur zeigt, hat es nur, um erneut ausgeführt werden, zu aktualisieren.

Antwort

3

Tkinter-Root-Fenster haben eine Methode, nach der eine Funktion aufgerufen werden kann, die nach einer bestimmten Zeit aufgerufen wird. So nennen, die Funktion selbst wie (Sie zuerst eine Klasse erstellen, müssen):

def update_label(self): 
    self.label.configure(cpuTemp) 
    self.root.after(1000, self.update_label) 

Dies wird dann laden Sie Ihre Label jede Sekunde.

Dies kann Ihnen helfen: Creating a Timer with tkinter

+2

die GUI in eine Klasse zu setzen ist schön, aber nicht unbedingt notwendig. –

+0

Ah, Ok, das war mir nicht bewusst .. – frankenapps

+0

vielen Dank! Ich denke, dass andere Post während der Suche aufgrund der Benennung nicht gesehen, aber kombiniert mit Ihrer Antwort sieht aus wie es meine Frage perfekt beantwortet. Ich habe "nachher" nicht bemerkt, als ich durch die Dokumentation von tkinter geschaut habe, aber das ist großartig, danke nochmal! –

Verwandte Themen