Jak utrzymać aktywność wiersza w Listbox?

Jak utrzymać aktywność wiersza w Listbox?
HA
  • Rejestracja:około 11 lat
  • Ostatnio:około 2 lata
  • Postów:9
1

Cześć!

Listbox po lewej powinien mieć cały czas aktywny wybrany wiersz - jeśli kliknę do wyboru daty po prawej aktywność znika - jest jakiś prosty sposób aby wybrany wiersz w listbox po prawej był cały czas aktywny?

Przechwytywanie.PNG

edytowany 2x, ostatnio: harnasx
JV
  • Rejestracja:ponad 6 lat
  • Ostatnio:3 miesiące
  • Postów:242
1
harnasx napisał(a):

Cześć!

Listbox po prawej powinien mieć cały czas aktywny wybrany wiersz

Jak tu widzę na obrazku że jest po lewej.

Poza tym obiekt klasy Listbox ma metodę .selection_set(index) gdzie możesz dokonać selekcji pola o podanym indeksie. Można by do tego widżetu zbindować dodatkowo event <FocusOut> i w podanym callbacku zaznaczyć w liście odpowiednie pole lub pola. Albo robić to w callbackach innych widżetów?

... jest jakiś prosty sposób aby wybrany wiersz w listbox po prawej był cały czas aktywny?

ale to chyba oczywiste że dany widżet staje się nieaktywny jeżeli myszką klikniesz w inny. Chodzi ci pewnie, że jest nie zaznaczony a nie że nie aktywny?

HA
  • Rejestracja:około 11 lat
  • Ostatnio:około 2 lata
  • Postów:9
0
jvoytech napisał(a):

Jak tu widzę na obrazku że jest po lewej.

Poza tym obiekt klasy Listbox ma metodę .selection_set(index) gdzie możesz dokonać selekcji pola o podanym indeksie. Można by do tego widżetu zbindować dodatkowo event <FocusOut> i w podanym callbacku zaznaczyć w liście odpowiednie pole lub pola. Albo robić to w callbackach innych widżetów?

... jest jakiś prosty sposób aby wybrany wiersz w listbox po prawej był cały czas aktywny?

ale to chyba oczywiste że dany widżet staje się nieaktywny jeżeli myszką klikniesz w inny. Chodzi ci pewnie, że jest nie zaznaczony a nie że nie aktywny?

po mojej prawej :) - jasne że po lewej - poprawiłem

tak zaznaczony żeby był cały czas - poniekąd "przepisuje" tą aplikacje z VBA na Pythona i tam nie było takiego problemu - raz zaznaczony wierz był zaznaczony w Listbox do momentu odznaczenia (ręcznie lub w kodzie)

czyli tylko przez "callback"? - przyszło mi to do głowy ale nie chciało się robić myśląc że można prościej

HA
  • Rejestracja:około 11 lat
  • Ostatnio:około 2 lata
  • Postów:9
0

w tym lewym listbox mam funkcję która wykonuje się po zaznaczeniu wiersza

def listboxSelect(index):  #  funkcja pod zdarzenie <<ListboxSelect>> - wywoływane, gdy zmienione  zaznaczenie
    if ct_listbox.curselection() != ():
        global aktywnywiersz
        wybranynrszkody = ct_listbox.get(ct_listbox.curselection())
        aktywnywiersz = ct_listbox.curselection()
        labelnumerszkody1text.set(wybranynrszkody[0:15])  # [0:15] ogranicza liczbę wyświetlanych znaków

        # odczyt pliku dane.xml
        ReadXML(wybranynrszkody)
    ct_listbox.bind('<<ListboxSelect>>', listboxSelect)

i teraz jesli w innym miejscu kody zaznaczam "podświetlam" wiersz przez
ct_listbox.selection_set(aktywnywiersz)

to wykonuje mi się funkcja listboxSelect () - a nie chcę tego!! :(

jak to zrobić jeszcze inaczej?

HA
  • Rejestracja:około 11 lat
  • Ostatnio:około 2 lata
  • Postów:9
0

Rozwiązanie jest banalne!!!!!
wystarczy parametr przy tworzeniu listy exportselection=False
i możemy sobie zaznaczać wiersze w kilku oknach

ct_listbox = tk.Listbox(window, exportselection=False)

Tasmanian Devil
Twój post prawdopodobnie zawiera niesformatowany kod - nie wklejaj bezpośrednio kodu, ale obejmuj go w znaczniki kodu ```! (jestem botem, ten komentarz został dodany automatycznie) /cc @cerrato

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.