Python Funktion in Schleife aufrufen

Ich will, dass wenn ich eine Taste drücke, ein Print-output ausgegeben wird und gleichzeitig überprüft wird, ob eine if-Abfrage wahr ist.
Das ist mein aktueller Code:

Python:
from pynput.keyboard import Listener

AlarmHour = 6
AlarmMinute= 30
ActualHour = 6
ActualMinute = 30
loop = 0


while loop == 0:
    if AlarmHour == ActualHour and AlarmMinute == ActualMinute:
        print("Aufstehen!")

    def on_press(key):
        print("key pressed")


# Collect events until released
with Listener(
        on_press=on_press) as listener:
    listener.join()

Nun soll also ausgegeben werden "Aufstehen!" und wenn ich eine Taste drücke soll ausgegeben werden "key pressed". Jedoch wird nur "Aufstehen!" ausgegeben und nicht "key pressed", wenn ich eine Taste drücke.
 
Zuletzt bearbeitet:
Wenn du Python code hast musst du auch die Einrückungen angeben.
Schau mal unter Edit, weitere Einstellungen, da gibt es ein Code Button, wo du auch python angeben kannst.

Python:
if 3 < 4:
    x += 3
2+3
 
Du startest ja schon einen Event-Listener also brauchst du deine While-Schleife gar nicht. Du kannst deine Prüfung auch in deine on_press-Methode packen. Bisschen Inspiration gibt es auch in der PyInput-Doku: https://pynput.readthedocs.io/en/latest/keyboard.html

Und bitte nutze die CODE-Tags im Forum, sonst kann das doch keiner lesen.
 
ich habe es jetzt als Code angegeben. Ich werde es mal probieren
Ergänzung ()

Das Problem ist, dass ich die Variablen "ActualHour" und "ActualMinute" durch die tatsächliche Zeit ändern will, die sich konstant ändert. Ebenfalls soll die ganze Zeit überprüft werden, ob die tatsächliche zeit der AlarmZeit entspricht und nicht nur einmal.
 
Das Problem ist ja, dass ich gar nicht erst in die on_press Methode reinkomme.
Es gibt immer nur "Aufstehen!" in Dauerschleife aus.
 
weil ich nicht weiß, wie ich die Funktion in der Schleife aufrufen soll
 
dein listener wird niemals gestartet, weil du auf ewig in der "while" schleife festhängst. erst wenn du die verlassen würdest, würde der listener auch mal gestartet.

vielleicht kommt das hier dem näher was du willst:
Python:
import time
from pynput.keyboard import Listener


AlarmHour = 6
AlarmMinute= 30
ActualHour = 6
ActualMinute = 30
loop = True


def on_press(key):
    print("key pressed: %s" % key)


with Listener(on_press=on_press) as listener:

    while loop:
        if AlarmHour == ActualHour and AlarmMinute == ActualMinute:
            print("Aufstehen!")

        # check every second for alarm
        time.sleep(1)

    listener.join()
 
vielen Dank, funktioniert jetzt genauso wie ich es wollte. Danke
 
hast du auch verstanden warum es nicht funktioniert hat? Also das Konzept von Event Listenern und der on_press Methode? Das waere zumindest fuer die Zukunft hilfreich.
 
Zurück
Oben