kbhit mit timeout-funktion

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
Cookie
User
Beiträge: 5
Registriert: Mittwoch 24. Februar 2010, 14:36

Hi Leute,
ich versuche gerade ein psychologisches Experiment in Psychopy (basierend auf Python) zu programmieren und habe in eurem Forum gelesen, dass kbhit eine timeout-Funktion hat. Allerdings meldet mir mein Programm immer wieder einen Fehler, wenn ich bspw kbhit(timeout=600) schreibe.
Könnt ihr mir da vielleicht helfen? Was mache ich falsch?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo und willkommen im Forum!

Es ist natürlich ganz hilfreich, wenn du uns den Fehler (inklusive des Tracebacks) verrätst und auch den genannten Thread hier verlinkst.

Sebastian
Das Leben ist wie ein Tennisball.
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Cookie hat geschrieben:Hi Leute,
ich versuche gerade ein psychologisches Experiment in Psychopy (basierend auf Python) zu programmieren und habe in eurem Forum gelesen, dass kbhit eine timeout-Funktion hat. Allerdings meldet mir mein Programm immer wieder einen Fehler, wenn ich bspw kbhit(timeout=600) schreibe.
Könnt ihr mir da vielleicht helfen? Was mache ich falsch?
Was du falsch machst? Du überliest Dinge.

In dem von dir wahrscheinlich gelesenen Beitrag steht "Die Posixvariante von kbhit() unterstützt auch ein timeout Argument ...". Nun verwendest du aber wahrscheinlich Windows und dort zeigt ein kurzes Experiment folgendes Ergebnis:

Code: Alles auswählen

>>> msvcrt.kbhit(timeout=5)

Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    msvcrt.kbhit(timeout=5)
TypeError: kbhit() takes no keyword arguments
>>> msvcrt.kbhit(5)

Traceback (most recent call last):
  File "<pyshell#21>", line 1, in <module>
    msvcrt.kbhit(5)
TypeError: kbhit() takes exactly 0 arguments (1 given)
Cookie
User
Beiträge: 5
Registriert: Mittwoch 24. Februar 2010, 14:36

okay, also hat kbhit in meinem Fall garkeine timeout-Funktion?
wo kriege ich eine timeout-Funktion her???

PS: Danke für die schnellen Antworten!!!
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Wie wäre es mit einem GUI-Programm statt einer Konsolenanwendung? Diese könnte man (auch plattformunabhängig) leichter mit der gewünschten Funktion versehen.

Stefan
Cookie
User
Beiträge: 5
Registriert: Mittwoch 24. Februar 2010, 14:36

Ich habe das Problem mittlerweile gelöst. Vielen Dank für eure Hilfe!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Cookie hat geschrieben:Ich habe das Problem mittlerweile gelöst.
Also wenn du die Lösung dann auch noch posten würdest...
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Cookie
User
Beiträge: 5
Registriert: Mittwoch 24. Februar 2010, 14:36

ich habs so gemacht: (bitte nicht auslachen, bin absolute Anfängerin, kenne Python erst seit Montag...)

Startzeit=core.Clock()
Startzeit.reset()

while True:
Instruktion.draw()
mywin.update()
if Startzeit.getTime() > 1:
print 'zu langsam'
break
if len(event.getKeys('a'))>0:
print Startzeit.getTime()
break
event.clearEvents()
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Nein hier wird nicht gelacht. Das ist zum Nutzen fuer die Nachwelt.

Aber du solltest dir mal PEP 8 anschauen und in Zukunft fuer Code [code=py][/code] verwenden.

Welches Toolkit das ist waere eventuell auch hilfreich :)
Cookie
User
Beiträge: 5
Registriert: Mittwoch 24. Februar 2010, 14:36

also ich habe weder eine idee was PEP ist noch was du mit Code und Toolkit meinst...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Also mit den Code-Tags meint Cofi das:

Code: Alles auswählen

Startzeit=core.Clock()
Startzeit.reset()

while True:
    Instruktion.draw()
    mywin.update()
    if Startzeit.getTime() > 1: 
        print 'zu langsam'
        break
    if len(event.getKeys('a'))>0: 
        print Startzeit.getTime()
        break 
    event.clearEvents()
Und mit PEP8 meint Cofi den Python Styleguide - einfach mal danach googlen :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Leonidas hat geschrieben:Und mit PEP8 meint Cofi den Python Styleguide - einfach mal danach googlen :)
Oder in meine Signatur schaun ;)

Und mit Toolkit meinte ich die Bibliothek, die du zum darstellen verwendest (und von der du scheinbar auch die Eingaben bekommst).
Antworten