Schönen Guten Abend liebes Forum,
Ich bräuchte mal wieder eure Hilfe: Ich habe mal alles andere rausgelöscht um es übersichtlicher zu machen. Habe ein Programm mit GUI geschrieben bei dem ich über mit TKinter erzeugte Button, Schrittmotoren von A nach B fahren lassen kann. Während ein Schrittmotor sich bewegt sollen die GUI-Button deaktiviert werden damit man nicht zweimal drauf tippen kann und sich die Befehle stapeln. Das sperren/ disablen von den Button funktioniert aber leider nur bedingt. Zwar sind sie auf dem GUI ausgegraut, nehmen aber trotzdem noch Befehle an die dann der Reihe nach abgearbeitet werden. Wenn ich den Button nach dem Ablauf der Funktion nicht wieder entsperre nimmt er auch keine Befehle mehr an, also so wie es eigentlich sein sollte
Habe es bis jetzt auf diese zwei Arten versucht:
1. Das Sperren und Entsperren als eigene Funktion und diese vor und nach der Funktion zum bewegen des Schrittmotors abrufen
2. Das Sperren des Button direkt mit in die Funktion rein, also am Anfang und Ende der for-loop.
Hat jemand eine Idee voran es liegt?
from tkinter import *
import time
import RPi.GPIO as GPIO
fenster = Tk()
fenster.geometry("840x480+00+150")
GPIO.setmode(GPIO.BCM)
A1S =16 #GPIO Pin 16
# Dreht den Schrittmotor
def Plus():
for i in range(1000):
GPIO.output(A1S, True)
time.sleep(0.0018)
GPIO.output(A1S, False)
def GUIsperren(): # Sperrt den Button im GUI
b1["state"] = "disabled"
def GUIentsperren(): # Entsperre den Button im GUI
b1["state"] = "normal"
def moveaxis():
GUIsperren() # Sperrt den Button im GUI
Plus() # Dreht den Schrittmotor
GUIentsperren() # Entsperre den Button im GUI
b1=Button(fenster, text="PLUS", command=moveaxis)
b1.place(x=190, y=180,height=80, width=80)
fenster.mainloop()
Alles anzeigen