mehrere Buttons nacheinander drücken

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • hallo miteinander!
    ich habe ein problem (Python 3)
    bei meinem ersten programm habe ich 3 Buttons für ein LED am GPIO 7

    1= Led an
    2= blinken
    3= root beenden

    nach einem button kann ich weder den anderen drücken noch den root per Kreuzchen (rechts oben)oder per button beenden!?!
    es hängt irgendwie fest...
    Beim ersten hab ich es mit if:, else: versucht... geht aber nicht.

    Hier ist der Code:


    from tkinter import *
    import RPi.GPIO as GPIO
    import time

    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(7, GPIO.OUT)


    def HIGH():
    if GPIO.output(7, GPIO.HIGH):
    GPIO.cleanup()

    else:
    while(True):
    GPIO.output(7, GPIO.HIGH)

    def LOW():
    while(True):
    GPIO.output(7, GPIO.LOW)
    time.sleep(0.0062)
    GPIO.output(7, GPIO.HIGH)
    time.sleep(0.001)

    root = Tk()

    b1 = Button(root, text= "LED AN", command=HIGH)
    b1.pack()

    b2 = Button(root, text= "Fan Frequenz", command=LOW)
    b2.pack()

    b3 = Button(root, text= "Beenden", fg="Red", command=root.destroy)
    b3.pack()

    root.mainloop()

    Was mache ich falsch?

  • Schreib mal bitte deinen Code in code tags "[ code ] balhbalhbalh [ \ code ]" (natürlich ohne leerzeichen innerhalb der Eckigenklammern) dann kann man dein Skript etwas besser lesen.

    Und die schleifen erkennen, die du gebaut hast oder falsch gemacht hast ;)

    --
    man ist das System-Anzeigeprogramm für die Handbuchseiten von Linux.

    Einmal editiert, zuletzt von Lunepi (27. Februar 2015 um 09:39)

  • Bitte füge in der Überschrift (ersten Beitrag bearbeiten) auch noch das wichtigste ein: Das es hier um Tkinter geht.

    Und erklär bitte auch noch mal genauer was du erreichen möchtest und bitte benenn dein Tk Objekt mal anders damit man auch versteht was du mit " root per Kreuzchen " meinen könntest :s


    Aber soweit ich das bisher beurteilen kann wird das so nicht funktionieren.

    In der HIGH() Funktion bleibt er in der while hängen da diese nirgends beendet wird und blockiert somit den Rest - in der LOW() Funktion genau das selbe. Diesen Funktionen solltest du aber auch mal andere Namen geben, so ist das nur sehr verwirrend insbesondere weil der Funktions-Name nicht ansatzweise das beschreibt was diese Funktion macht :fies:
    Und sobald GPIO7 mal auf HIGH ist werden alle GPIO's auf die Werkseinstellung zurück gesetzt, funktionieren dann also nicht mehr. Dank des GPIO.cleanup() Aufrufs... Das macht so also eigentlich auch kein Sinn und das was du erreichen oder bewirken willst bleibt auch verborgen

Jetzt mitmachen!

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