wtorek, 4 kwietnia 2017

Markery, mniej statyczne niż by się zdawało.

Marker miał być prostym elementem graficznym naniesionym na "canvas" w Tkinter, w celu odróżnienia elementów policzonych od niepoliczonych. Mimo, podstawowych założeń, element ten jest daleki od statycznego.

Na razie zaimplementowałem dodawanie pojedynczych markerów oraz usuwanie wszystkich już naniesionych. Jeżeli kolor dla markera określonej próbki zostanie zmieniony, to wszystkie naniesione markery danej próbki aktualizują swój kolor. To znaczy usuwane są wszystkie naniesione, których kolor uległ zmianie i nanoszone są na nowo posiadając aktualny kolor. Jest to możliwe dzięki nadawaniu określonych tagów elementom nanoszonym na "canvas".

W zasadzie nie jest to niczym skomplikowanym. Wszystkie utworzone elementy są przeszukiwane, a następnie sprawdzane są ich tagi. Jeśli dany tag należy do grupy, której zmieniono kolor, id danego elementu jest dodawane do listy. Następnie elementy obecne na liście są usuwane z "canvas'u". W kolejnym kroku jest przeszukiwana główna lista wszystkich naniesionych markerów i jeśli dany marker należy do grupy, której zmieniono barwę, to jest on nanoszony na "canvas" z nową barwą.

W założeniach jest to bardzo proste, ale miałem pewien problem z implementacją, gdyż okazało się, że tagi Tkinter "canvas" działają nieco inaczej, niż to zrozumiałem z dokumentacji. Warto również wspomnieć, że tagi podczas ich przypisywania do elementów, są automatycznie konwertowane do string'a  przechowywanego w touple.

Zastosowane rozwiązania mogą również pozwolić na wybiórcze usuwane danej grupy markerów, co może umożliwić na dodanie czegoś w rodzaju warstw. Przydatnym narzędziem do dodania wydaje się również, możliwość usuwania pojedynczych markerów, na wypadek gdyby, któryś element został oznaczonym przez pomyłkę.

Brak komentarzy:

Prześlij komentarz