czwartek, 23 marca 2017

Ustawienia i zmienne.

Pracowałem nad możliwością zmiany klasyfikatorów w markerach i dostrzegłem kolejne ograniczenie Tkinter.

Wyświetlanie tekstu na przycisku jest bardzo proste. Wystarczy do klasy przekazać dany tekst, jako atrybut "text". Dany napis zostanie wtedy wyświetlony na przycisku, a wielkość (długość) przycisku zostanie dopasowana do długości przekazanego tekstu. W ten sposób nic nie zostanie ucięte. Schody zaczynają się, kiedy wielkość przycisku "width" zostanie odgórnie zdefiniowana.

Niestety Tkinter próbuje umieścić na przycisku cały przekazany tekst, a jeśli napis jest zbyt długi, wtedy widoczny jest tylko jego początek. Wygląda to brzydko, a dodatkowo cięcie napisu odbywa się nie pomiędzy danymi literami, tylko miejscu, w którym kończy się "pole" do wyświetlania tekstu, a granica ta może przebiegać przez środek litery. Czyli wygląda to jeszcze brzydziej. Prostym rozwiązaniem byłoby przycięcie ciągu znaków, poprzez zastosowanie "[:]", ale tekst na przyciskach nie jest typu string, tylko odrębną klasą Tkinter StringVar(), która takiej funkcji nie posiada.

Koniecznością okazało się utworzenie osobnego słownika, przechowującego zmienne odpowiedzialne, za przechowywanie tekstu, który znajdzie się na przyciskach. Dodatkowo tekst ten jest obrabiany do odpowiedniej długości. W ten sposób jeśli nowy klasyfikator przekroczy długość 3 znaków, zostanie wyświetlony na przycisku jako skrót opatrzony na końcu kropką, aczkolwiek podczas eksportu statystyk do plików zostanie wyeksportowana jego pełna nazwa. Dzięki temu prostemu zabiegowi GUI będzie wyglądało poprawnie i żadne informacje nie zostaną utracone.

Brak komentarzy:

Prześlij komentarz