Wie kann man den Text auf einem PUSHBUTTON abfragen

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
d.elm
User
Beiträge: 12
Registriert: Freitag 13. Januar 2023, 18:24

Ich befasse mich erst seit kurzem mit PYTHON, meine anderen Projekte habe ich bisher mit DELPHI realisiert. Nun möchte ich ein Projekt von WINWOWS auf einen RASPBERRY umsetzen und PYTHON verwenden. Ich habe einige Bücher erworben und auch schon im Internet recherchiert, aber habe keine Antwort auf meine Frage erhalten.
Ich möchte den Text auf einem PUSHBUTTON ermitteln und abhängig davon einen anderen Text ausgeben.
Kann mir jemand helfen?
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

Es ist meist keine gute Idee, Informationen im Text eines Buttons zu speichern. Dazu verwendet man ganz einfach Instanzattribute.

Um Dir helfen zu können, bräuchten wir schon etwas mehr Informationen. Welches Framework? Etc.

Code: Alles auswählen

import tkinter as tk

class Window(tk.Tk):
    def __init__(self):
        super().__init__()
        self.counter = 0
        self.button = tk.Button(text=f"Count {self.counter}", command=self.increase)
        self.button.pack()
    
    def increase(self):
        self.counter += 1
        self.button["text"] = f"Count {self.counter}"

def main():
    window = Window()
    window.mainloop()
    
if __name__ == "__main__":
    main()
d.elm
User
Beiträge: 12
Registriert: Freitag 13. Januar 2023, 18:24

Hallo, danke für Deine schnelle Antwort.
Ich habe eine "Hilfsvariable" angelegt, die die Beschriftung speichert.
Mit Delphi brauchte ich keine "Hilfsvariable", der Zustand des Button ist ja auch schon in einer Art Variable gespeichert.
Alles klar. Danke noch enmal
Detlef
Benutzeravatar
__blackjack__
User
Beiträge: 13100
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@d.elm: Du brauchst auch in Python keine ”Hilfsvariable”. Andererseits ”brauchst” Du die auch in Delphi. Denn auch dort ist es keine gute Idee den Zustand der Programmlogik in der GUI zu speichern. Ist dort leider nicht unüblich GUI und Programmlogik nicht sauber zu trennen. Das ist ja keine ”Hilfs”variable, sondern die ganz normale Variable, die den Zustand unabhängig von der GUI im Programm repräsentiert. Und recht wahrscheinlich sollte das auch gar kein Text sein, sondern ein Wahrheitswert oder ein Aufzählungstyp (in Python mit dem `enum`-Modul).
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
__deets__
User
Beiträge: 14536
Registriert: Mittwoch 14. Oktober 2015, 14:29

Man kann das auch in tkinter machen, der Zugriff funktioniert genauso wie die Zuweisung. button[text]. Man macht es nur nicht. Auch nicht in Delphi. Sauber programmieren in GUIs bedeutet die Nutzung von sowas wie einem MVC Muster, und das trennt Daten, die man verarbeitet, von der Darstellung. Sowas geht auch spätestens dann in die Hose, wenn das Elaborat übersetzt werden soll. Dann muss der Code plötzlich zurück übersetzen.

Nur als Anmerkung: soweit ich weiß steht mit Lazarus Pascal auch eine Delphi-artige Umgebung auf dem Pi zur Verfügung. Falls du in einer gewohnteren Umgebung arbeiten willst.
Antworten