Seite 1 von 1

Fenster geht nicht auf und Variable erfährt kein Update

Verfasst: Sonntag 8. Dezember 2024, 16:52
von kiaralle
Hi,
ich finde gerade den Fehler nicht.

1. das Fenster geht nicht auf.
2. self.i wird nicht aktualiesiert.

Es sind meine ersten Versuche mit Tkinder und Klassen.

Wenn ich die ganze Sachen mit den Update weg lasse, geht das Fenster auf.

Code: Alles auswählen

from tkinter import *
import random


class Updater():
    def __init__(self, messergebnis_label, i):
        self.messergebnis_label = messergebnis_label
        self.i = i

    
    def messupdater(self):
        while True:
            self.messergebnis_label["text"] = self.i
            print(self.i)
            self.messergebnis_label.after(100, self.messupdater)

def main():


    i = random.randint(1, 100)    
    
    fenster = Tk()
    fenster.title("Testprogramm")
    # Fenstergröße ermitteln
    w, h = fenster.winfo_screenwidth(), fenster.winfo_screenheight()
    fenster.geometry("%dx%d+0+0" % (w, h))

    messergebnis_label = Label(fenster)
    messergebnis_label.pack(padx=20)

    exit_button = Button(fenster, text="Beenden", command=fenster.quit)
    exit_button.pack(side='left', padx=20)
    exit_button.config(bg="#FF4444", activebackground="#cc6666",
                       highlightbackground="#ff0000")



    updater = Updater(messergebnis_label, i)
    updater.messupdater()
    fenster.mainloop()


if __name__ == "__main__":
    main()


Danke sagt der Ralf :-)

Re: Fenster geht nicht auf und Variable erfährt kein Update

Verfasst: Sonntag 8. Dezember 2024, 17:01
von kiaralle
Mein Problem scheint hier zu liegen.

Code: Alles auswählen

def messupdater(self):
        while True:

Re: Fenster geht nicht auf und Variable erfährt kein Update

Verfasst: Sonntag 8. Dezember 2024, 17:05
von grubenfox
kiaralle hat geschrieben: Sonntag 8. Dezember 2024, 16:52 1. das Fenster geht nicht auf.
2. self.i wird nicht aktualiesiert.
zu 1. kann ich nicht qualifiziertes sagen. Aber zu 2.: welche Aktualisierung? i wird genau einmal initialisiert und dann nie verändert. Da ist nichts was irgendwie aktualisiert werden könnte/müsste/sollte.
PS. Jetzt habe ich es mal laufen lassen. Ausserdem ist die Methode messupdater kaputt, weil eine Endlosschleife. Die muss da weg...

Re: Fenster geht nicht auf und Variable erfährt kein Update

Verfasst: Sonntag 8. Dezember 2024, 17:12
von kiaralle
Ja ich möchte i im Fenster aktualisieren.
Meine Erkenntniss, ich spinge im def main() zum def messupdater(self) komme aber da nicht mehr raus.
Der Ablauf ist ja klar. fenster.mainloop kommt ja als letzter Aufruf.

Code: Alles auswählen

    updater = Updater(messergebnis_label, i)
    updater.messupdater()
    fenster.mainloop()
Deshalb geht das Fensgter nicht auf.

Mein Skript dient erst einmal zur Selbsbildung. :-)

Re: Fenster geht nicht auf und Variable erfährt kein Update

Verfasst: Sonntag 8. Dezember 2024, 17:18
von grubenfox
kiaralle hat geschrieben: Sonntag 8. Dezember 2024, 17:12 Meine Erkenntniss, ich spinge im def main() zum def messupdater(self) komme aber da nicht mehr raus.
Genau, da bleibt er in der Endlosschleife hängen...

Re: Fenster geht nicht auf und Variable erfährt kein Update

Verfasst: Sonntag 8. Dezember 2024, 17:18
von kiaralle
Ja "while True" hab ich raus.
Wie bekomme ich da ein update von i hin?

Re: Fenster geht nicht auf und Variable erfährt kein Update

Verfasst: Sonntag 8. Dezember 2024, 17:34
von kiaralle
Gelöst :-)

Code: Alles auswählen

class Updater():
    def __init__(self, messergebnis_label):
        self.messergebnis_label = messergebnis_label


    
    def messupdater(self):
        i = random.randint(1, 100)
        self.messergebnis_label["text"] = i
        self.messergebnis_label.after(100, self.messupdater)

def main():



    
    fenster = Tk()
    fenster.title("Testprogramm")
    # Fenstergröße ermitteln
    w, h = fenster.winfo_screenwidth(), fenster.winfo_screenheight()
    fenster.geometry("%dx%d+0+0" % (w, h))

    messergebnis_label = Label(fenster)
    messergebnis_label.pack(padx=20)

    exit_button = Button(fenster, text="Beenden", command=fenster.quit)
    exit_button.pack(side='left', padx=20)
    exit_button.config(bg="#FF4444", activebackground="#cc6666",
                       highlightbackground="#ff0000")



    updater = Updater(messergebnis_label)
    updater.messupdater()
    fenster.mainloop()


if __name__ == "__main__":
    main()