2016-06-03 22 views
0

Ich bin ziemlich neu in der Programmierung und versuche, ein ziemlich einfaches Programm zu schreiben, das die Zeiten zwischen verschiedenen Tastendrucken aufzeichnet (ein bisschen wie mehrere Reaktionszeittests) und diese Zeiten auf dem Bildschirm in einem Array druckt, dann beendet und speichert das Array nach einer bestimmten Zeit ist abgelaufen.Pygame, Tkinter oder etwas anderes für TUI und Reaktion auf Tastatureingabe?

Ich habe bereits das meiste Programm in pygame geschrieben, nachdem ich auf Tkinter verzichtet habe, weil es das beste Ding zu sein scheint, auf Tastatureingabe in Echtzeit zu antworten. Jetzt, da ich möchte, dass der Text automatisch scrollt, sobald der Bildschirm voll ist, weitere Spalten zum Array hinzufügen und nach Excel exportieren, frage ich mich, ob ich mit einem besser geeigneten Modul besser dran bin Textverarbeitung.

Kann mir jemand sagen, ob ich einen Fehler mache, wenn ich versuche, dies in pygame zu tun und ob sofort auf mehrere Tastatureingaben in Tkinter reagiert werden kann? Ich kann bei Bedarf mehr Details liefern.

+0

Was meinen Sie mit "sofort auf mehrere Tastatureingaben reagieren"? Meinst du "mehrere" wie mehrere Tasten gleichzeitig drücken oder einfach schnell tippen? Was meinst du mit "Echtzeit" - tkinter kann auf Ereignisse innerhalb von Millisekunden reagieren, ist das nicht schnell genug? –

+0

Nein, ich meine nur eine Reihe von Eingaben, ohne Enter zu drücken. Ich möchte die Zeit zwischen dem Drücken von zum Beispiel 'a' und dann 'b' berechnen. Als ich im tkinter nachgeschaut habe, wie ich das machen könnte, konnte ich nichts finden und dachte, dass ich etwas anderes brauchen müsste. – neptune36

Antwort

0

Mit Tkinter können Sie eine Bindung an herstellen. Die aufgerufene Funktion wird an ein Ereignisobjekt mit Zeitstempel übergeben. Sie können das verwenden, um die Zeit zwischen Ereignissen zu berechnen.

Hier ist ein kurzes Beispiel, das zeigt, wie die Zeit zwischen den Tastendrücken angezeigt wird. Sie können natürlich Ihre eigene Logik hinzufügen, um zu zählen und zu verfolgen und anzuzeigen, wie Sie wollen.

import Tkinter as tk 

class Example(tk.Frame): 
    def __init__(self, parent): 
     self.last_event = None 
     tk.Frame.__init__(self, parent) 
     self.label = tk.Label(self, text="") 
     self.text = tk.Text(self, wrap="word") 

     self.label.pack(side="top", fill="x") 
     self.text.pack(fill="both", expand=True) 

     self.text.bind("<Any-KeyRelease>", self.on_key_release) 

    def on_key_release(self, event): 
     if self.last_event is not None: 
      delta = event.time - self.last_event.time 
      self.label.configure(text="time since last event: %s ms" % delta) 
     self.last_event = event 

if __name__ == "__main__": 
    root = tk.Tk() 
    Example(root).pack(fill="both", expand=True) 
    root.mainloop() 
+0

Danke, das wird sehr hilfreich sein, wenn ich mich entscheide, zu Tkinter zu wechseln. – neptune36