Seite 1 von 1
Zeit änderbar time.sleep
Verfasst: Donnerstag 24. August 2017, 20:40
von DominikReis
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.
Re: Zeit änderbar time.sleep
Verfasst: Donnerstag 24. August 2017, 21:04
von 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.
Re: Zeit änderbar time.sleep
Verfasst: Donnerstag 24. August 2017, 21:53
von snafu
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.
Re: Zeit änderbar time.sleep
Verfasst: Freitag 25. August 2017, 11:03
von DominikReis
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.
Re: Zeit änderbar time.sleep
Verfasst: Freitag 25. August 2017, 11:28
von Sirius3
@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.
Re: Zeit änderbar time.sleep
Verfasst: Freitag 25. August 2017, 12:14
von DominikReis
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?
Re: Zeit änderbar time.sleep
Verfasst: Freitag 25. August 2017, 12:36
von 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.
Re: Zeit änderbar time.sleep
Verfasst: Freitag 25. August 2017, 12:45
von DominikReis
Tkinter?
Ich möchte einen Ausgang für eine bestimmte Zeit, die ich über eine Eingabe, an einem Touchscreen ändern kann, ansteuern.
Re: Zeit änderbar time.sleep
Verfasst: Freitag 25. August 2017, 13:50
von 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.
Re: Zeit änderbar time.sleep
Verfasst: Dienstag 29. August 2017, 09:42
von DominikReis
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()
Re: Zeit änderbar time.sleep
Verfasst: Dienstag 29. August 2017, 09:52
von 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.