Stimmt, der Lock war richtig implementiert, denn es war ja der gleiche Lock self.gedrueckt_lock = Lock().Sirius3 hat geschrieben:@Alfons Mittelmeyer: das ursprüngliche Programm hat völlig korrekt mit Locks gearbeitet, und Du hast es geschafft, mit zwei Fehlversuchen im dritten Anlauf das Lock überflüssig zu machen, ohne es zu merken, und dabei aus einem klaren und nachvollziehbaren Interface ein Chaos zu veranstalten
on_gedrueckt hat nun zwei völlig unabhängige Funktionen: das setzen eines Attributs und das Abfragen eines Attributs; beide Operationen kann man (vorausgesetzt man verwendet einen Python-Bytecode-Interpreter mit GIL und interner Implementation der Wörterbücher) als atomar ansehen.
Aber wo siehst Du zwei Fehlversuche? Für das Funktionieren der GUI habe ich mehrere Lösungen gebracht, die alle funktioniert hatten, nämlich Timer, sleep und after. Am Besten man macht es mit after, wobei dann die Locks überflüssig sind. Und was hast Du gegen so ein klares Lock Interface mit Setzen und Abfragen durch dieselbe Funktion, das man nur einmal braucht? Bei einem Dictionary kann man mit my_dictionary[key] auch sowohl setzen wie abfragen oder mit config bei Tkinter auch. Ist also durchaus üblich für alle keys nur eine Funktion zu haben und dass man damit auch Setzen sowie Abfragen kann.