Python Turtle'da renk ve kalem kalınlığı değiştirme işlemi, kalemin birkaç özelliğini ayarlayarak yapılır. pencolor() çizgi rengini, fillcolor() doldurulan şeklin iç rengini, color() bu iki rengi birlikte veya ayrı ayrı, pensize() ise çizgi kalınlığını belirler. bgcolor() bu gruptan ayrılır; kalemin değil, Turtle penceresinin arka plan rengini değiştirir.
Renk adları hızlı bir başlangıç sağlar. Daha özel tonlar için önce colormode(255) ayarını yapıp RGB demetleri kullanabilirsin.
Renk ve kalem kalınlığı komutları ne işe yarar?

Bir ayarı değiştirdiğinde yeni değer, sonraki çizimlerde kullanılacak kalem durumuna uygulanır. Çizginin rengini ve kalınlığını değiştirmek için pencolor() ile pensize(), kapalı ve doldurulan bir şeklin iç rengini belirlemek için fillcolor() kullanılır. bgcolor() ise Screen nesnesinin yöntemidir; bu nedenle pencere görünümünü değiştirir, Turtle nesnesinin kalem özelliklerini değil.
Aşağıdaki örneklerde kalem bir Turtle nesnesini, ekran ise çizimin açıldığı pencereyi temsil eder.
| Komut | Kısa sözdizimi | Etkisi |
|---|---|---|
pencolor() |
kalem.pencolor("blue") |
Çizilen çizginin rengini mavi yapar. |
fillcolor() |
kalem.fillcolor("yellow") |
Doldurulan şeklin iç rengini sarı yapar. |
color() |
kalem.color("red")kalem.color("red", "yellow") |
Tek renkte çizgi ve dolguyu birlikte, iki renkte çizgi ve dolguyu ayrı ayarlar. |
pensize() |
kalem.pensize(5) |
Sonraki çizgilerin kalınlığını verilen pozitif değere ayarlar. |
bgcolor() |
ekran.bgcolor("orange") |
Turtle penceresinin arka planını turuncu yapar; kalem ayarlarını değiştirmez. |
color() tek bir renk aldığında, örneğin kalem.color("red") yazıldığında, çizgi ve dolgu aynı renge ayarlanır. kalem.color("black", "yellow") kullanımında ise ilk değer çizgiye, ikinci değer dolguya gider. Yöntemleri parantez içinde değer olmadan çağırmak mevcut ayarı okumayı sağlar.
import turtle
ekran = turtle.Screen()
kalem = turtle.Turtle()
ekran.bgcolor("orange")
kalem.color("red", "yellow")
kalem.pensize(5)
kalem.forward(120)
turtle.done()
Beklenen sonuç: Turuncu arka plan üzerinde kalınlığı 5 olan kırmızı bir çizgi görünür. Dolgu rengi de sarı olarak ayarlanır ve doldurulacak şekiller için hazır olur.
Renk adları ve RGB demetleri nasıl kullanılır?
Doğrudan renk adı kullanımı için değeri tırnak içinde yazabilirsin. kalem.pencolor("blue") çizgiyi mavi yapar. kalem.fillcolor("yellow") doldurulan alanı sarı yapar. kalem.color("blue", "yellow") ise mavi çizgi ve sarı dolgu ayarını tek satırda oluşturur.
RGB demeti, (r, g, b) biçiminde üç bileşen taşır. 0-255 aralığındaki bileşenleri kullanacaksan önce ekran.colormode(255) çağrısını yapmalısın. Ardından kalem.pencolor((30, 144, 255)) çizgiyi canlı mavi tonuna, kalem.fillcolor((255, 215, 0)) doldurulan bölgeyi altın sarısı tonuna ayarlar. İki RGB demetini kalem.color((30, 144, 255), (255, 215, 0)) biçiminde verirsen ilk demet çizgiye, ikinci demet dolguya uygulanır.
Python'da temel sözdizimini ve fonksiyon kullanımını kendi hızında pekiştirmek için ücretsiz Sıfırdan Temel Python video eğitimine göz atabilirsin.
Kalem hareketi ve dolgu sırası nasıl ayarlanır?

Bir şekli temiz çizmek için kalem ayarlarını ve hareketlerini doğru sıraya koymalısın. pensize() çizgi kalınlığını belirler; pencolor() kenar rengini, fillcolor() iç dolgu rengini seçer. İki değer birlikte verildiğinde color() da bu iki rengi aynı anda ayarlayabilir. Pencere arka planını değiştiren bgcolor() ise kalemin çizgi veya dolgu ayarından ayrıdır. penup() hareket ederken çizgi çizilmesini durdurur, pendown() ise çizimi yeniden başlatır.
- Önce çizgi ve dolgu renklerini belirle. Ardından
pensize()ile o şeklin çerçeve kalınlığını seç. penup()çağrısını kullanarak kalemi kaldır. Başlangıç noktasına ya da yeni çizim konumuna geçerken ekranda bağlantı çizgisi oluşmaz.- Çizime başlayacağın noktaya geldiğinde
pendown()çağrısını yap. Bundan sonraki hareketler çizgi oluşturur. - Şekli çizmeye hemen başlamadan önce
begin_fill()komutunu çalıştır. Böylece sonraki çizimler dolgu işlemi için kaydedilir. - Kalem aşağıdayken şekli tamamla. Tam bir daire kendi sınırını kapatır; çokgenlerde ise başlangıç noktasına dönmek gerekir.
- Son çizim hareketinden sonra
end_fill()çağrısını yap. Dolgu işlemi bu komutla tamamlanır ve iç bölge seçtiğinfillcolor()değerini alır.
Sıra kontrolü: Dolgu görünmüyorsa fillcolor() değerinin şekilden önce ayarlandığını, begin_fill() komutunun çizimden önce, end_fill() komutunun ise şekil tamamlandıktan sonra çalıştığını kontrol et. Şekil çizilirken kalemin aşağıda olması da önemlidir.
Uygulama: Üç katmanlı renkli bir rozet çizimi
Aşağıdaki örnek, tek bir Turtle nesnesi ve anlaşılır bir yardımcı fonksiyon kullanır. Üç daire aynı merkeze yerleşir. colormode(255) sayesinde RGB demetlerinde 0 ile 255 arasındaki değerleri kullanabilir; renk adlarını ve RGB demetlerini aynı program içinde birlikte yazabilirsin.
import turtle
turtle.colormode(255)
kalem = turtle.Turtle()
kalem.speed(0)
def rozet_katmani(turtle_objesi, yaricap, kalem_rengi, dolgu_rengi, kalinlik):
turtle_objesi.penup()
turtle_objesi.home()
turtle_objesi.setheading(0)
turtle_objesi.forward(yaricap)
turtle_objesi.left(90)
turtle_objesi.pensize(kalinlik)
turtle_objesi.pencolor(kalem_rengi)
turtle_objesi.fillcolor(dolgu_rengi)
turtle_objesi.pendown()
turtle_objesi.begin_fill()
turtle_objesi.circle(yaricap)
turtle_objesi.end_fill()
rozet_katmani(kalem, 150, "black", (255, 215, 0), 8)
rozet_katmani(kalem, 105, (255, 255, 255), "blue", 5)
rozet_katmani(kalem, 60, (128, 0, 128), "red", 2)
kalem.hideturtle()
turtle.done()
Yardımcı fonksiyon her katmanda kalemi önce kaldırır, merkeze döndürür, yarıçap kadar ilerletir ve yönünü değiştirir. Böylece dairelerin merkezleri aynı noktada kalır. Kalem indirildikten sonra begin_fill(), daire çizimi ve end_fill() sırası uygulanır.
Çalıştırdığında dış katmanda siyah, kalın bir çerçeve ve altın renkli dolgu görürsün. Orta katmanda beyaz, orta kalınlıkta farklı bir çizgi ile mavi dolgu; iç katmanda ise mor, ince bir çerçeve ile kırmızı dolgu yer alır. Böylece pencolor() ile kenarın, fillcolor() ile iç bölgenin nasıl ayrı ayrı kontrol edildiği belirginleşir.
Bu tür uygulamaları kişiye özel müfredat ve ödev desteğiyle seviyene göre ilerletmek için birebir Python Özel Ders programı incelenebilir.
Artık yarıçap, renk ve kalınlık değerlerini değiştirerek kendi rozet tasarımlarını deneyebilirsin.