Hallo allerseits,
ich nutze grade wieder Tk für ein Programm mit GUI.
Das Ding hat viele Entrys, mit denen man am besten mit TAB und Shift+TAB hin und her navigiert. Unter den Entrys ist ein Progressbar. Kriegt das versehentlich den Fokus, kann man den Balken mit den Cursor-Tasten links/rechts verschieben. Zur Ansicht:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use 5.010;
use strict;
use warnings;
use Time::HiRes 'time';
use Tk;
use Tk::ProgressBar;
my $data = 0;
my $mw = MainWindow->new;
$mw->Entry( -text => 'blah' )->pack;
$mw->Entry( -text => 'krams', -bg => 'grey80' )->pack;
my $progressbar = $mw->ProgressBar(
-from => 0,
-to => 400,
-variable => \$data,
-width => 6,
-length => 100,
-blocks => 100,
-colors => [ 0, 'green' ],
)->pack;
my $button = $mw->Button( -text => 'x' )->pack;
$mw->repeat( 10, sub { $data = time*1000 % 400; } );
MainLoop;
Jetzt die Frage: Kann man das verhindern?
Meine Versuche waren bisher, den '<FocusIn>' mit einem
bind des Progressbars einzufangen und den Fokus gleich weiterzugeben, dummerweise scheint kein bind-Event auszulösen (über eine Schleife alle mal zugeordnet).
Der nächste Schritt wird dann sein, Tk::Progressbar rauszuwerfen und durch was eigenes zu ersetzen. Lieber wäre mir natürlich das fertige Modul weiterverwenden zu können.
System ist WinXP, Tk ist 804.028