Ich setze on_motion
auf EVT_MOTION
. Ich möchte, dass die Mausposition für interaktiv ein koordinatenspezifisches Bild erzeugt, aber WxPython hat eine ~ 400ms Verzögerung bei der Registrierung von aufeinanderfolgenden Bewegungsereignissen. Das macht die Schnittstelle träge.
Warum ist EVT_MOTION
so langsam und wie repariere ich es? Ich habe es in Ubuntu 11.10 und WinXP versucht und die Verzögerungen sind vergleichbar?
Ich brauche schnelle Antwortzeiten für die Auswahl eines Teils aus einem Bild wie das Bild zeigt. So wie es ist, folgt das "Fadenkreuz" der Maus zu langsam.
Hier ist der Code, den ich probiert EVT_MOTION
:
Die aktuelle Frage ist unvollständig, da es keine Beispiel-App gibt, um das Problem zu demonstrieren. Allerdings würde ich sagen, dass der Bewegungshandler nichts mit Ihrem Problem zu tun hat, da Sie höchstwahrscheinlich teure Operationen zwischen nachfolgenden Bewegungshandlern durchführen (wie zum Beispiel das Aktualisieren Ihrer gesamten Zeichenfläche).
Wenn dies der Fall ist (und Sie können leicht überprüfen, ob Ihre Zeichenroutine zwischen Mausbewegungsereignissen aufgerufen wird), würde ich Folgendes vorschlagen:
Der EVT_MOTION
wird jedes Mal ausgelöst, wenn die Maus bewegt wird! Wenn Sie dann event.GetPosition()
bei jeder Bewegung aufrufen und auch die Daten verarbeiten, verlangsamt dies die Performance.
Wie wäre es, EVT_LEFT_DOWN
oder etwas Ähnliches zu verwenden und dann die Position zu erhalten und diese Daten zu verarbeiten.
Dies wird viel effizienter, da Sie nur nach einem bestimmten Bereich des Bildes suchen.
Wir müssen wirklich sehen, was sonst in der Anwendung passiert, um Ihnen sinnvolle Antworten geben zu können, obwohl viele Leute in der Lage sind, die Probleme selbst zu lösen, indem sie eine kleine Probe erstellen, die das Problem demonstriert mit anderen teilen.
Optimieren, wie Sie das Fadenkreuz zeichnen und / oder wie Sie den Hauptinhalt des Fensters aktualisieren, ist wahrscheinlich Ihre beste Wahl, aber bis Sie mehr Details teilen, können wir nur raten.