Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Tk::Listbox "vergisst" <<ListboxSelect>> bei Textauswahl in anderem Fenster

7 views
Skip to first unread message

Tim Landscheidt

unread,
Nov 7, 2012, 2:04:44 PM11/7/12
to
Hallo,

in einigen Scripts nutze ich:

| $Listbox->bind ('<<ListboxSelect>>',
| sub
| {
| $Button->configure ('-state' =>
| defined ($Listbox->curselection ()) ? 'normal' : 'disabled');
| });

um Buttons (nicht) freizugeben, wenn (mindestens) ein Ein-
trag ausgew�hlt ist. Das funktioniert bei manueller Aus- und
Abwahl auch einwandfrei.

Wenn ich allerdings in einem anderen Fenster (KDE) einen
Text selektiere, wird die Auswahl abgew�hlt, ohne dass der
Callback ausgef�hrt wird.

Gibt es da ein anderes Ereignis, das ich binden sollte,
oder ist das ein Fehler in Tk::Listbox?

Tim

K. Wittrock

unread,
Nov 15, 2012, 10:23:41 AM11/15/12
to
Tim Landscheidt schrieb :
> Hallo,
>
> in einigen Scripts nutze ich:
>
>> $Listbox->bind ('<<ListboxSelect>>',
>> sub
>> {
>> $Button->configure ('-state' =>
>> defined ($Listbox->curselection ()) ? 'normal' :
>> 'disabled'); });
>
> um Buttons (nicht) freizugeben, wenn (mindestens) ein Ein-
> trag ausgewählt ist. Das funktioniert bei manueller Aus- und
> Abwahl auch einwandfrei.
>
> Wenn ich allerdings in einem anderen Fenster (KDE) einen
> Text selektiere, wird die Auswahl abgewählt, ohne dass der
> Callback ausgeführt wird.
>
> Gibt es da ein anderes Ereignis, das ich binden sollte,
> oder ist das ein Fehler in Tk::Listbox?

Bei Win XP geht's richtig, die Selektion in der Listbox bleibt
erhalten, wenn ich ein Fremdfenster aktiviere (ActivePerl v5.14.2, Tk
804.029). Mein Linux ist leider kaputt gegangen, sodass ich nur
spekulieren kann.

Wenn das Fenster der Listbox den Fokus an ein Fremdfenster verliert,
sollte das keinen Einfluss auf die Selektion in der Listbox haben. Dazu
passt deine Bemerkung
> ... ohne dass der Callback ausgeführt wird.

Denkbar wäre, dass die Selektion noch besteht, aber nicht angezeigt
wird, solange das Fenster inaktiv ist. Versuche mal, das Fenster zu
aktivieren, ohne dass die Selektion beeinflusst wird. Mit einem Klick
in die Titelleiste könnte das gelingen.

Gruß

Klaus

--
Meine Email-Adr. lautet
K<ohne_Punkt_und_Komma>Wittrock<Klammeraffe>web.de


Tim Landscheidt

unread,
Nov 15, 2012, 11:10:06 AM11/15/12
to
(anonymous) wrote:

>> in einigen Scripts nutze ich:

>>> $Listbox->bind ('<<ListboxSelect>>',
>>> sub
>>> {
>>> $Button->configure ('-state' =>
>>> defined ($Listbox->curselection
>>> ()) ? 'normal' : 'disabled'); });

>> um Buttons (nicht) freizugeben, wenn (mindestens) ein Ein-
>> trag ausgew�hlt ist. Das funktioniert bei manueller Aus- und
>> Abwahl auch einwandfrei.

>> Wenn ich allerdings in einem anderen Fenster (KDE) einen
>> Text selektiere, wird die Auswahl abgew�hlt, ohne dass der
>> Callback ausgef�hrt wird.

>> Gibt es da ein anderes Ereignis, das ich binden sollte,
>> oder ist das ein Fehler in Tk::Listbox?

> Bei Win XP geht's richtig, die Selektion in der Listbox
> bleibt erhalten, wenn ich ein Fremdfenster aktiviere
> (ActivePerl v5.14.2, Tk 804.029). Mein Linux ist leider
> kaputt gegangen, sodass ich nur spekulieren kann.

> Wenn das Fenster der Listbox den Fokus an ein Fremdfenster
> verliert, sollte das keinen Einfluss auf die Selektion in
> der Listbox haben. Dazu passt deine Bemerkung
>> ... ohne dass der Callback ausgef�hrt wird.

> Denkbar w�re, dass die Selektion noch besteht, aber nicht
> angezeigt wird, solange das Fenster inaktiv ist. Versuche
> mal, das Fenster zu aktivieren, ohne dass die Selektion
> beeinflusst wird. Mit einem Klick in die Titelleiste k�nnte
> das gelingen.

Vielleicht h�tte ich es eindeutiger formulieren sollen :-):
Ich kann problemlos zu einem anderen Fenster wechseln und
wieder zur�ck, ohne dass sich die Listbox-Auswahl �ndert.
Selektiere ich aber in diesem anderen Fenster einen Text,
geht die Listbox-Auswahl (ohne Ereignis) verloren.

Meine /Vermutung/ w�re daher, dass Tk intern auf das X-Er-
eignis "Text in anderem Fenster selektiert" mit der Deselek-
tierung der Listbox-Auswahl reagiert, aber die daraus resul-
tierende �nderung nicht den Callback ausl�st (wobei IMHO der
eigentliche Fehler in dem ersten Teil l�ge).

Tim

K. Wittrock

unread,
Nov 16, 2012, 5:29:17 AM11/16/12
to
Tim Landscheidt schrieb am 15.11.2012 :
> (anonymous) wrote:
>
>>> in einigen Scripts nutze ich:
>
>>>> $Listbox->bind ('<<ListboxSelect>>',
>>>> sub
>>>> {
>>>> $Button->configure ('-state' =>
>>>> defined ($Listbox->curselection
>>>> ()) ? 'normal' : 'disabled'); });
>
>>> um Buttons (nicht) freizugeben, wenn (mindestens) ein Ein-
>>> trag ausgewᅵhlt ist. Das funktioniert bei manueller Aus- und
>>> Abwahl auch einwandfrei.
>
>>> Wenn ich allerdings in einem anderen Fenster (KDE) einen
>>> Text selektiere, wird die Auswahl abgewᅵhlt, ohne dass der
>>> Callback ausgefᅵhrt wird.
>
>>> Gibt es da ein anderes Ereignis, das ich binden sollte,
>>> oder ist das ein Fehler in Tk::Listbox?
>
>> Bei Win XP geht's richtig, die Selektion in der Listbox
>> bleibt erhalten, wenn ich ein Fremdfenster aktiviere
>> (ActivePerl v5.14.2, Tk 804.029). Mein Linux ist leider
>> kaputt gegangen, sodass ich nur spekulieren kann.
>
>> Wenn das Fenster der Listbox den Fokus an ein Fremdfenster
>> verliert, sollte das keinen Einfluss auf die Selektion in
>> der Listbox haben. Dazu passt deine Bemerkung
>>> ... ohne dass der Callback ausgefᅵhrt wird.
>
>> Denkbar wᅵre, dass die Selektion noch besteht, aber nicht
>> angezeigt wird, solange das Fenster inaktiv ist. Versuche
>> mal, das Fenster zu aktivieren, ohne dass die Selektion
>> beeinflusst wird. Mit einem Klick in die Titelleiste kᅵnnte
>> das gelingen.
>
> Vielleicht hᅵtte ich es eindeutiger formulieren sollen :-):
> Ich kann problemlos zu einem anderen Fenster wechseln und
> wieder zurᅵck, ohne dass sich die Listbox-Auswahl ᅵndert.
> Selektiere ich aber in diesem anderen Fenster einen Text,
> geht die Listbox-Auswahl (ohne Ereignis) verloren.

Ich hab's nochmal durhprobiert. Ich kann im Fremdfenster selektieren,
ohne dass die Selektion in der Listbox verloren geht. Als Fremdfenster
habe ich den Windows Explorer und Notepad verwendet. Im Notepad habe
ich auch mal die Selektion in die Zwischenablage kopiert oder
ausgeschnitten, brachte keine Probleme. Zurᅵck in der Listbox konnte
ich mit der alten Selektion weiterarbeiten, z. B. durch Klick auf einen
Button eine Zeile nach oben verschieben.

Dein Problem ist wohl Linux-spezifisch. Oder aber: Verwendest du eine
ᅵltere Version von Tk? Slaven Rezic hat ja in der aktuellen Version
noch mal etliche Bugs gefixt.

Gruᅵ
0 new messages