Python-Script Tkinter

  • Hallo zusammen,

    Ich will ein python script, dass in einem GUI(Tkinter) die Prozessortemperatur anzeigt.
    Bis jetzt habe ich folgendes:


    das funktioniert auch so weit, bis auf die Aktualisierung
    das Label aktualisiert sich nicht, nur wenn man das script neu startet


    Hat jemand eine Idee wie man das Problem lösen könnte
    mfg
    pi1717

  • Hi pi1717,

    um die Anzeige zu aktualisieren musst Du die Temperaturabfrage in eine Funktion packen, welche dann in einem bestimmten Intervall wiederholt wird.

    Beispiel für Dein Script:
    [code=php]from Tkinter import *
    from time import *

    root=Tk()
    # Funktion Temperaturanzeige
    def show_temp():
    tempFile = open( "/sys/class/thermal/thermal_zone0/temp" )
    cpu_temp = tempFile.read()
    tempFile.close()
    x=float(cpu_temp)/1000

    # Titel aktualisieren
    w.config(text=x)
    w.pack()

    # Funktion im intervall wiederholen
    root.after(interval, show_temp)


    # Titel noch leer
    w = Label(root)

    # Aktualisierungsintervall
    interval = 2000


    root.after(0, show_temp)
    root.mainloop()[/php]

    Einmal editiert, zuletzt von samtux (1. September 2015 um 21:53)

  • Folgendes wäre besser - also insbesondere das 'with' Statement, da sich das selber ums schließen der Datei kümmern:
    [code=php]
    def cputemp():
    with open('/sys/class/thermal/thermal_zone0/temp', 'r') as f:
    CPUtemp = int(float(f.readline().split()[0]))
    CPUtemp = round((CPUtemp/1000.0), 2)
    return CPUtemp
    [/php]

    Oder:
    [code=php]
    def cputemp():
    with open("/sys/class/thermal/thermal_zone0/temp", 'r') as f:
    content = f.read().splitlines()
    return float(content[0]) / 1000.0
    [/php]

    Und vielleicht auch noch interessant:

    Spoiler anzeigen


    [code=php]
    def getRAM():
    with open('/proc/meminfo', 'r') as mem:
    tmp = 0
    for i in mem:
    sline = i.split()
    if str(sline[0]) == 'MemTotal:':
    total = int(sline[1])
    elif str(sline[0]) in ('MemFree:', 'Buffers:', 'Cached:'):
    tmp += int(sline[1])
    free = tmp
    used = int(total) - int(free)
    usedPerc = (used * 100) / total
    return total, free, used, usedPerc
    [/php]

    https://github.com/giampaolo/psutil

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!