Rysowanie po Canvas-ie w tkinter

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 9327 razy

Metody dodające obiekty graficzne do Canvas-u

Kontrolka Canvas udostępnia następujący zestaw metod, umożliwiających dodawanie obiektów graficznych, które będą rysowane:

Dostęp do obiektów canvas-u

Każda z wyżej wymienionych metod zwraca identyfikator obiektu, po którym można się do niego odwoływać.

Pozyskiwanie i modyfikowanie informacji o koordynatach (współrzędnych) opisujących dany obiekt

W celu dorwania się do danych opisujących dany obiekt należy posłużyć się metodą coords, która przyjmuje jeden obowiązkowy argument będący identyfikatorem danego obiektu. Gdy jako drugi argument tej funkcji nie zostanie podana lista opisująca nowe koordynaty, metoda ta zwraca bieżące koordynaty obiektu:

rectangle_id = canvas.create_rectangle((0,0,10,20)) coords = canvas.coords(rectangle_id) # pobieranie koordynatów canvas.coords(rectange_id, (coords[0] + 5, coords[1] + 10, coords[2] + 20, coords[3] + 40)) # zmiana koordynatów

Dostęp i zmiana właściwości obiektu

Każdy obiekt ma swoje właściwości, które są ustawiane w trakcie ich tworzenia. Dzięki metodzie itemconfig można uzyskać dostęp do słownika zawierającego wszystkie opcje, lub zmienić ustawienia wybranej opcji. Oto przykład:

rectangle_id = canvas.create_rectangle((0,0,10,20)) options = canvas.itemconfig(rectangle_id) # zwraca słownik zawierający wszystkie ustawienia danego obiektu canvas.itemconfig(rectangle_id, width = 2, fill = "#ff0000", outline = "#00ff00") # zmiana szerokości linii obramowania, koloru wypełnienia i obramowania

Usuwanie obiektu z canvas-u za pomocą metody delete

Usuwanie wszystkich elementów dodanych do canvasu:

canvas.delete(tk.ALL)

Usunięcie danego obiektu wymaga podanie na wejście identyfikatora obiektu:

id1, id2 = canvas.create_rectangle((0,0,100,100)), canvas.create_rectangle((20,30,100,200)) canvas.delete(id1, id2) # usuwanie dwóch obiektów na raz

Pobieranie listy elementów

Pobieranie listy wszystkich elementów dodanych do canvasu za pomocą metody find_all

list = canvas.find_all() # zwraca krotkę zawierającą identyfikatory obiektów w kolejności ich dodania

Pobieranie identyfikatora obiektu znajdującego się najbliżej danego punktu za pomocą metody find_closest

Metoda ta zwraca krotkę, zawierającą identyfikator najbliżej znajdującego się obiektu. Jeżeli na canvas-ie nie ma obiektów będzie błąd.

objectid = canvas.find_closest(10,20)[0] # zwraca id obiektu znajdującego się najbliżej podanych współrzędnych

Pobieranie listy wszystkich elementów zawierających się całkowicie wewnątrz podanego prostokąta za pomocą metody find_enclosed

items = canvas.find_enclosed( 20, 20, 125, 125) # zwraca krotkę identyfikatorów obiektów, jeżeli nie ma żadnego to krotka jest pusta

Pobieranie listy wszystkich elementów zawierających się częściowo wewnątrz podanego prostokąta za pomocą metody find_overlapping

items = canvas.find_overlapping( 20, 20, 125, 125) # zwraca krotkę identyfikatorów obiektów, jeżeli nie ma żadnego to krotka jest pusta

Znajdowanie identyfikatora obiektu poniżej

id = find_bellow(object_id)

Znajdowanie identyfikatora obiektu powyżej

id = find_abowe(object_id)

Przemieszczanie obiektu za pomocą metody move

rectangle_id = canvas.create_rectangle((0,0,10,10)) canvas.move(rectangle_id, 10, 10)
Propozycje książek