Wie kann man wiederholt etwas tun, während die Schaltfläche in GTK2HS gedrückt wird?

StackOverflow https://stackoverflow.com//questions/22059147

  •  23-12-2019
  •  | 
  •  

Frage

Ich muss einige Aktion durchführen, während die Taste gedrückt wird.Wie kann ich es tun?

Ich habe Version 0.12.4.

p.S.: Aus irgendeinem Grund generakodicetagcode in

generasacodicetagpre.

tun Sie nichts.


Es ist auch gut zu gehen, wenn die Aktion wiederholt erfolgen wird, während er einige Taste auf der Tastatur gedrückt wird.

War es hilfreich?

Lösung

nach dem docs OnbuttonActivate ist abgeschrieben, sodass Sie es wahrscheinlich nicht verwenden sollten.Ich habe jedoch Schwierigkeiten, die richtige Art zu finden, es gibt wahrscheinlich irgendwo einige Generics-Signale, die Sie verwenden sollten.Sie können meine Lösung ausprobieren, die auf aufgedrückter und onrelease verwendet wird (diese werden auch als abgeschrieben).Sie könnten so tun, wie Sie im Kommentar vorgeschlagen haben, und Gabel ein Thread:

generasacodicetagpre.

schreibe dann deinen main ab, um zu tun:

generasacodicetagpre.

Ich bin nicht sicher, ob dies jedoch sicher ist, da es scheint, dass es möglich ist, dass das Button-Ereignis, das er feuert, vor dem Killthread zurückzuführen ist.Es könnte sicherer sein, ein IOREF zu verwenden:

generasacodicetagpre.

Ich habe den Code Sinus leider nicht kompiliert oder getestet. Ich kann GTK auf diesem Computer nicht installieren, aber lassen Sie mich wissen, wenn Sie Probleme haben.

Andere Tipps

Dies verwendet ein ToggleButton, ein "Timeout" -Objekt (siehe TIMEOUTADD im Modul System.Lib.mainloop in den Dokumenten) und ein IOREF.Ein Timer wird gestartet, wenn der ToggleButton heruntergedrückt wird, jedoch nur, wenn sich derzeit kein anderer Timer läuft (das ist der Zweck des IOREF).Wenn die Taste losgelassen wird, wird der Timer angehalten.Die Callback-Funktion des Timers gibt IO false zurück, um das Timer-Objekt anzuhalten und zu zerstören.

generasacodicetagpre.

Die bevorzugte Möglichkeit, Signalabrufe registrieren, verwenden Sie "EIN".Beachten Sie auch, dass das Fenster "On Window ObjectDeRey Mainquit" korrekt zerstört und die GTK-Hauptschleife anhält (Ihre Version hat die Timer nicht in GHCI zerstört, sie läuften immer wieder nach "Main").

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top