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?
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?
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?
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
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?
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)