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ᅵ