Hallo,
ich habe das beigefügte Programm hier aus dem Forum Phyton tkinter GUI while Schleife lässt sich nicht beenden..
Da aber die Lösung am Ende nicht mitgeteilt wurde versuche ich nun das Programm zum Laufen zu bringen.
Mein Problem dabei ist das die entsprechende LED nicht blinkt.
Kann mir dazu jemand einen Tipp geben ?. Die Grafik funktioniert.
Mit einem einfachen Konsolen-Programm blinkt die LED.
Python
#!/usr/bin/python3
# -*- coding: utf-8 -*-
try:
#python3
from tkinter import *
from time import *
except ImportError:
#python2
from Tkinter import *
from time import *
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
#GPIO Nummer wie auf dem Raspberry Board verwenden
GPIO.setmode(GPIO.BCM)
LED_GREEN = 26 # Pin 37 (GPIO 26) als Output, LED GREEN
LED_YELLOW = 20 # Pin 38 (GPIO 20) als Output, LED YELLOW
LED_RED = 21 # Pin 40 (GPIO 21) als Output, LED RED
GPIO.setup(LED_GREEN,GPIO.OUT)
GPIO.setup(LED_YELLOW,GPIO.OUT)
GPIO.setup(LED_RED,GPIO.OUT)
class MyApp(Tk):
def __init__(self):
Tk.__init__(self)
fr = Frame(self)
fr.pack()
self.canvas = Canvas(fr, height = 100, width = 100)
self.canvas.pack()
self.rect = self.canvas.create_rectangle(25, 25, 75, 75, fill = "white")
self.do_blink = False
start_button = Button(self, text="start blinking",
command=self.start_blinking)
stop_button = Button(self, text="stop blinking",
command=self.stop_blinking)
start_button.pack()
stop_button.pack()
GPIO.output(LED_RED,GPIO.HIGH)
def start_blinking(self):
self.do_blink = True
self.blink()
def stop_blinking(self):
self.do_blink = False
def blink(self):
if self.do_blink:
current_color = self.canvas.itemcget(self.rect, "fill")
new_color = "red" if current_color == "white" else "white"
self.canvas.itemconfigure(self.rect, fill=new_color)
#LED aus
GPIO.output(LED_RED, GPIO.LOW)
# eine Sekunde warten
sleep(1)
#LED an
GPIO.output(LED_RED, GPIO.HIGH)
# eine Sekunde warten
sleep(1)
self.after(1000, self.blink)
if __name__ == "__main__":
root = MyApp()
root.mainloop()
Alles anzeigen
MfG
Juergen B.