Zeit änderbar time.sleep

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
DominikReis
User
Beiträge: 5
Registriert: Donnerstag 24. August 2017, 20:31

Hallo.
Ich versuche mich gerade an Python.
Kann ich die Zeit für time.sleep() über ein Eingabefeld in einem Fenster einstellen?
Wenn ich das versuche kommt immer ein typenkonflikt.
BlackJack

@DominikReis: Was genau ist ein Typkonflikt? `time.sleep()` erwartet eine Zahl als Argument. Allerdings klingt Eingabefeld und Fenster nach GUI, also nach einem Programm in dem man die `sleep()`-Funktion eher nicht verwendet.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

DominikReis hat geschrieben:Wenn ich das versuche kommt immer ein typenkonflikt.
Typenkonflikt müsstest du schon genauer beschreiben. Am besten indem du die komplette Fehlermeldung hierhin kopierst. Gut möglich, dass du einen String aus dem Eingabefeld erhälst. Der muss vorab natürlich in einen Zahltyp (float oder int) umgewandelt werden, bevor er an sleep() übergeben wird. Das erledigt die Funktion nämlich nicht automatisch.
DominikReis
User
Beiträge: 5
Registriert: Donnerstag 24. August 2017, 20:31

Ja es wird ein string über das Eingabefeld ausgegeben. Brauche aber für time.sleep() eine Zahl. Entweder ich wandle den string in eine Zahl um,was ich auch noch nicht passend hinbekommen habe, oder es gibt eine schönere Lösung.
Mein Ziel ist es einen Ausgang für eine bestimmte Zeit, die ich über ein Eingabefeld ändern kann, anzusteuern. Vielleicht gibt es da auch eine schönere oder auch einfachere Lösung.

Vielen Dank schonmal für die Antworten.
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@DominikReis: wie BlackJack schon geschrieben hat, passen sleep und GUI nicht wirklich zusammen. Das mal beiseite gelassen, was findest Du am Umwandeln eines Strings in eine Zahl, wenn Du eine Zahl brauchst, nicht schön?

Zeig doch mal, was Du bisher versucht hast, und was daran nicht funktioniert.
DominikReis
User
Beiträge: 5
Registriert: Donnerstag 24. August 2017, 20:31

Finde das umwandeln von einem string in eine Zahl generell nicht schlecht. Aber habs halt, da ich wirklich nicht viel Erfahrung habe mit Python, es aber benötige, nicht so hinbekommen das ich es für time.sleep() benutzen kann. Wenn aber die sleep Funktion in GUI eher nicht verwendet wird, wie kann ich denn das ganze dann lösen?
BlackJack

@DominikReis: Was ist denn „das ganze“ in diesem Fall? Und welches GUI-Rahmenwerk wird verwendet? Normalerweise gibt es von GUI-Rahmenwerken aus die Möglichkeit eine Funktion oder Methode nach einer gewissen Zeit aufrufen zu lassen.
DominikReis
User
Beiträge: 5
Registriert: Donnerstag 24. August 2017, 20:31

Tkinter?
Ich möchte einen Ausgang für eine bestimmte Zeit, die ich über eine Eingabe, an einem Touchscreen ändern kann, ansteuern.
BlackJack

@DominikReis: In Tkinter ist das die `after()`-Methode auf Widgets, die man dafür benutzen kann. Eventuell nützlich wäre in dem Zusammenhang noch `functools.partial()` und/oder anonyme Funktionen mit dem ``lambda``-Schlüsselwort.
DominikReis
User
Beiträge: 5
Registriert: Donnerstag 24. August 2017, 20:31

Mit den ganzen tollen Funktionen die mir da vorgeschlagen worden sind komme ich nicht klar. Gibt es da denn keine einfache Lösung das man dieses Eingabefeld in ein integer umwandeln kann?
Weil so Sachen wie eingabe=(eingabe.get()) funktioniert alles nicht!
Und mit der after() Methode kommen die selben Fehler wie mit time.sleep()
BlackJack

@DominikReis: Die `get()`-Methode von `Entry` liefert eine Zeichenkette. Die muss man in eine Zahl umwandeln. Und die Zahl kann man dann `after()` als Argument übergeben. Oder man verwendet ein `Tkinter.IntVar`-Exemplar und gibt das dem `Entry` als `textvariable`-Argument. Die `get()`-Methode von `IntVar`-Exemplaren liefern Werte vom Typ `int`. Oder eine Ausnahme wenn die Zeichenkette nicht als ganze Zahl interpretiert werden kann.

Edit: Das mit `after()` die selben Fehler wie mit `time.sleep()` kommen ist jetzt übrigens eine interessante Aussage die ich kaum glauben kann. Vielleicht solltest Du mal tatsächlichen Code und die dazu gehörige Ausnahme zeigen, denn bisher gingen ja alle davon aus, dass es sich um einen `TypeError` wegen der Zeitangabe/Dauer handelt. Das dürftest Du mit `after()` eher nicht hinbekommen, oder falls doch, wäre es interessant *wie* Du das hin bekommen hast.
Antworten