tkinter Labelaktualisierung
Verfasst: Samstag 20. November 2021, 16:12
Hallo zusammen,
ich probiere schon ewig an einer Lösung rum und bekomme es einfach nicht hin. Ich hab bisher nur in Funktionen "gedacht" und möchte mich nur mehr in Richtung Klassen aufmachen.
Kurz zu meiner gewünschten Funktion. Ich habe einen Ablauf mit Sollwerten und Istwerten und möchte diese darstellen. Die Istwerte ändern sich ja und nähern sich dem Sollwert. Also muss ich ja die Labels automatisch aktualisieren. Mit der Funktion in meinem Programm 'ram_available(label)' geht das auch. Nur mit der von mir vermutlich total bescheuert angelegten Klasse will das nicht gehen. Vielleicht kann mir ja jemand von euch auf die Sprünge helfen. Diese RAM Prozentgeschichte dient lediglich dazu Werte zu erfassen die sich halt im Laufe des Programms ändern.
Was mach ich denn da falsch? Wenn ich die Methode update z.B. new nenne dann kommts zu folgender Fehlermeldung: AttributeError: 'Label' object has no attribute 'new'
Wenn ich die Update Methode aufrufe passiert nichts.. als auch der print nicht.
Wäre nett wenn mich jemand von meiner Leitung hebt und Licht ins Dunkel bringen kann..
ich probiere schon ewig an einer Lösung rum und bekomme es einfach nicht hin. Ich hab bisher nur in Funktionen "gedacht" und möchte mich nur mehr in Richtung Klassen aufmachen.
Kurz zu meiner gewünschten Funktion. Ich habe einen Ablauf mit Sollwerten und Istwerten und möchte diese darstellen. Die Istwerte ändern sich ja und nähern sich dem Sollwert. Also muss ich ja die Labels automatisch aktualisieren. Mit der Funktion in meinem Programm 'ram_available(label)' geht das auch. Nur mit der von mir vermutlich total bescheuert angelegten Klasse will das nicht gehen. Vielleicht kann mir ja jemand von euch auf die Sprünge helfen. Diese RAM Prozentgeschichte dient lediglich dazu Werte zu erfassen die sich halt im Laufe des Programms ändern.
Was mach ich denn da falsch? Wenn ich die Methode update z.B. new nenne dann kommts zu folgender Fehlermeldung: AttributeError: 'Label' object has no attribute 'new'
Wenn ich die Update Methode aufrufe passiert nichts.. als auch der print nicht.
Wäre nett wenn mich jemand von meiner Leitung hebt und Licht ins Dunkel bringen kann..
Code: Alles auswählen
import tkinter as tk
from tkinter import *
import psutil
refresh = 500
class My_label:
def __init__(self, label, window, text, separator, value, unit, row, column, columnspan, sticky):
self.label = label
self.window = window
self.text = text
self.separator = separator
self.value = value
self.unit = unit
self.row = row
self.column = column
self.columnspan = columnspan
self.sticky = sticky
def create(self):
label = tk.Label(self.window)
#
status = self.text + self.separator + str(self.value) + ' ' + self.unit
label.config(text=status)
#
label.grid(row=self.row,
column=self.column,
columnspan=self.columnspan,
sticky=self.sticky
)
return label # tkinter Label
def update(self):
x = float(ram_check())
print(x) # debug
status = self.text + self.separator + str(x) + ' ' + self.unit
self.label.config(text=status)
self.label.after(500, self.update)
def ram_check():
# you can have the percentage of used RAM
ram_percent = psutil.virtual_memory().percent
return ram_percent
def ram_available(label):
def check():
x = float(ram_check())
status = 'Virtual Memory:\t'+str(x)+'%'
label.config(text=status)
label.after(refresh, check)
check()
def main():
# Create a window
root = tk.Tk()
root.title("label test")
root.geometry("300x80")
actual_value_VM = My_label(
'actual_value_VM',
root,
'Virtual Memory',
':\t',
float(ram_check()),
'%',
1,
0,
1,
'W'
).create()
label_test = tk.Label(root,bg="#000000", fg="#FFFFFF")
ram_available(label_test)
label_test.grid(row=2, column=0, sticky="W")
button_refresh = tk.Button(
root,
text='refresh',
command=actual_value_VM.update()
)
button_refresh.grid(row=3,column=0)
root.mainloop()
if __name__ == '__main__':
main()