Thread Tk-Spinbox - Überprüfung manuelle Eingabe (8 answers)
Opened by Kean at 2011-09-26 13:37

Kean
 2011-09-26 13:37
#152667 #152667
User since
2004-08-18
463 Artikel
BenutzerIn

user image
Ich nutze zwei Tk-Spinbox'en zur Eingabe einer Uhrzeit. Die erste geht von 0-23 und die zweite von 0-59.
Mit den beiden Pfeilen kann man diese Werte auch nicht überschreiben. Aber man kann manuell in die Spinbox wie in einen Entry etwas eingeben.

Dafür habe ich mit Bind eine Abfrage eingebaut:

Code (perl): (dl )
1
2
3
4
5
$Spinbox_Std->bind ('<FocusOut>', sub{  if ( $Spinbox_Std->get() =~ /\D/ || $Spinbox_Std->get() > 23  ) { 
$Spinbox_Std->delete(0, 'end');
$Spinbox_Std->insert('end', '23');
}
} );


Dies korrigiert die Eingabe aber leider nur wenn man danach auch die Spinbox verlässt. Wenn man nach der letzten Eingabe direkt auf den Button Speichern klickt, dann wird der ungeprüfte Wert gezogen.

Kann ich das Focus-Event irgendwie manuell auslösen? Oder kennt jemand für solche Zwecke ein besser geeignetes Widget?

View full thread Tk-Spinbox - Überprüfung manuelle Eingabe