GUI LED ansteuern

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
M3chaton1ker
User
Beiträge: 1
Registriert: Montag 18. Februar 2019, 19:11

Hallo zusammen,

ich bin ein absoluter Python Anfänger und möchte es per Rasperry Pi erlernen.
Folgendes Problem: Ich möchte über einen GPIO (23) eine LED ansteuern mittels GUI (tkinter) und dann über einen Button. Momentan habe ich es soweit geschafft die Ansteuerung mit zwei Buttons zu realisieren (Button 1 für Ein mit dem entsprechendem Command und das selbe mit dem Button 2 für Aus).
Frage: Wie muss die Syntax aussehen für meinen Button, dass ich den Value abfragen kann, sprich es dann ganz simpel mit einem if steuern?

Code Ausschnitt mit zwei Buttons:
def Funktion_1():
GPIO.output(23,GPIO.HIGH)
def Funktion_2():
GPIO.output(23,GPIO.HIGH)


b1 = Button(root , text = AN , command = Funktion_1)
b2 = Button(root , text = AUS , command = Funktion_2)

b1.pack()
b2.pack()
root.mainloop()


Code Ausschnitt mit einem Button (nach meiner Idee nach und natürlich falsch):

b1 = Button(root , text = AN , command = Funktion_1)

if b1 == 1:
GPIO.output(23,GPIO.HIGH)
if b1 == 0:
GPIO.output(23,GPIO.LOW)

b1.pack()
root.mainloop()

#Fehler: b1 nicht definiert...


Danke im Voraus
M.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Bitte benutze die Code Tags im erweiterten Editor, so kann man deinen Quellcode schwer entziffern. Und so ganz verstanden was du willst habe ich auch nicht. Willst du einen Button zum toggeln/umschalten haben?
Benutzeravatar
__blackjack__
User
Beiträge: 13006
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@M3chaton1ker: `b1` ist da doch definiert, den Fehler dürftest Du also nicht bekommen. Es macht allerdings so gar keinen Sinn ein `Button`-Objekt mit den Zahlen 0 oder 1 zu vergleichen. Das ist natürlich *immer* ungleich. Vielleicht möchtest Du ja einen `Checkbutton` verwenden‽ Den kann man auch als normale Schaltfläche darstellen und der hat zwei Zustände denen man Werte zuordnen kann, also Beispielsweis `GPIO.HIGH` und `GPIO.LOW`.

Namen schreibt man in Python übrigens klein_mit_unterstrichen. Ausnahmen: Konstanten (KOMPLETT_GROSS) und Klassen (MixedCase). Zudem sollte man sinnvolle und aussagekräftige Namen verwenden. Also nichts mit nur einem Buchstaben und keine Nummerierung.

Bei GUI-Programmen kommt man nicht wirklich um objektorientierte Programmierung herum.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten