Bilgisayarlarındaki komut istemi programlarıyla ilgilenen bilgisayar kullanıcıları, zaman zaman konsollarının farklı şekillerde görünmelerini isteyebilir. Bunun için akla gelen ilk şey tabii ki konsolun renklerini değiştirmektir. Windows komut isteminde böyle bir değişiklik yapılabilmektedir. Ancak yapılan değişiklik bütün ekranı etkilemektedir, bu yüzden bazı kullanıcılar Komut İstemi’nin renk değiştirme fonksiyonunu yetersiz bulmaktadır. Neyse ki Python programlama dili ile haşır neşir olan kullanıcıların bildiği bir çözüm bulunmakta. Bu çözüm de Python dili için yazılmış Colorama kütüphanesidir. Bu kütüphane ile komut istemi içerisinde gelişmiş renk değiştirme fonksiyonları kullanılabilmektedir.
Colorama Kütüphanesi Tanıtımı
Colorama kütüphanesi, konsollarda kullanılabilen ASCII escape kodlarını kullanarak konsol uygulamalarına görsellik katmaya yarayan bir kütüphanedir. Python programlama dili henüz bu kütüphaneyi yerleşik olarak bulundurmamaktadır, ancak bu kütüphane pek çok kullanıcı tarafından rağbet görmekte ve renkli konsol uygulamalarının ortaya çıkmasını sağlamaktadır. Kullanımı oldukça basit olan Colorama kütüphanesi, konsol uygulamalarınızı görsellik konusunda çok daha ileriye taşıyacaktır.
Colorama Kütüphanesi Nasıl Yüklenir?
Biraz önce belirtildiği gibi Colorama, pek çok kütüphanenin aksine zamanla yerleşikleşmiş bir Python kütüphanesi olmadığı için kullanıcı tarafından yüklenmesi gerekmektedir. Bunun için Python programlama dili yüklü olan bir bilgisayarda Komut İstemi’ni açıp aşağıdaki kod satırı girilmektedir:
pip install colorama
Bu paketin yüklenmesi bittikten sonra Python editörünüzü açıp ilk satıra aşağıdaki komutu girerek colorama kütüphanesini kullanabilirsiniz:
import colorama
Ancak Colorama kullanımında zaman zaman escape kodu ile ilgili bir bozukluk olabildiği için importlar bittikten sonra şu komut satırını kullanarak konsolunuzu sıfırlayabilirsiniz:
colorama.init()
Bu sıfırlama işlemini gerçekleştirdikten sonra aşağıdaki komut satırıyla basit bir renk değiştirme işlemi gerçekleştirebilirsiniz:
print(colorama.Fore.BLUE + “Hello, World!”)
Buraya kadar olan programınızı kaydedip Python ile çalıştırdığınızda şu tür bir görüntü alırsınız:
Bu satırda print parantezinden hemen sonra yazılan “colorama.Fore.BLUE”, colorama kütüphanesinin “Fore” sınıfının “BLUE” isimli sabitine karşılık gelen ANSI escape kodudur. Colorama’nın Fore sınıfı on altı farklı sabiti tutmaktadır ve bu şekilde konsol yazınıza farklı renkler vermenize olanak tanımaktadır. Bu sınıfta tutulan tüm sabitler ve kullanımları şu şekildedir:
- Fore.BLACK
- Fore.BLUE
- Fore.WHITE
- Fore.GREEN
- Fore.RED
- Fore.YELLOW
- Fore.CYAN
- Fore.MAGENTA
- Fore.LIGHTWHITE_EX (açık beyaz)
- Fore.LIGHTBLUE_EX (açık mavi)
- Fore.LIGHTBLACK_EX (açık siyah)
- Fore.LIGHTMAGENTA_EX (açık pembe)
- Fore.LIGHTCYAN_EX (açık deniz mavisi)
- Fore.LIGHTYELLOW_EX (açık sarı)
- Fore.LIGHTRED_EX (açık kırmızı)
- Fore.LIGHTGREEN_EX (açık yeşil)
Buarada ilk sekiz sabit koyu renklere, son sekiz sabit açık renklere karşılık gelmektedir. Yukarıda verdiğimiz örnekte “Hello, World!” yazısı koyu mavi renkte yazılmıştır. Ancak yazımızın daha belli görünmesi için arka planımızda değişiklik yapabiliriz. Bunun için ise colorama kütüphanesindeki “Back” sınıfını kullanırız. Back sınıfının kullanımı Fore sınıfı ile aynıdır ve arka plan değişimi için özel ANSI escape kodları kullanır. Dolayısıyla kodumuzda şöyle bir değişiklik yapabiliriz:
print(colorama.Fore.BLUE + colorama.Fore.LIGHTBLACK_EX + “Hello, World!”)
Bu değişiklikten sonra kodumuzu kaydedip çalıştırdığımızda şu şekilde bir görüntü alırız:
Bu şekilde hem yazı rengini, hem de arka plan rengini değiştirmiş olduk. Şimdi biraz daha gelişmiş bir örnekle konuyu daha iyi anlayalım.
Colorama Basit Renk Değiştirme Örneği
Yukarıdaki örnek Colorama kütüphanesinin konsollarda nasıl kullanıldığına dair güzel bir örnek. Bu örneği kodlamanız için ihtiyacınız olan tek şey Colorama kütüphanesinin kendisi. Bu örneğin kaynak kodu en basit haliyle aşağıdaki gibidir:
import colorama
colorama.init()
print(colorama.Fore.LIGHTWHITE_EX + “COLORAMA DEMOSU”)
print(colorama.Fore.LIGHTYELLOW_EX + “—————“)
print(“\n\n” + colorama.Fore.LIGHTCYAN_EX + “Bu makale sayesinde Colorama’yı ” + colorama.Back.LIGHTRED_EX + colorama.Fore.LIGHTWHITE_EX + “sular seller” + colorama.Back.BLACK + colorama.Fore.LIGHTCYAN_EX + ” gibi öğreneceksiniz.”)
Bu kod başlık ile metni ayırmak için sarı çizgi kullanmakta ve alttaki metni farklı renkle yazdırmaktadır. Metindeki “sular seller” kısmı metnin geri kalanından farklı bir ön ve arka plan rengiyle yazılmaktadır. Bu kod okuma payı için verilen boşluklar da sayılırsa toplam yedi satır tutmaktadır.
Ancak bu kodu, Python programlama dili içerisinde bulunan string formatlama tekniği ile daha güzel bir şekilde yazma istiyorsanız şu şekilde yazabilirsiniz:
import colorama
colorama.init()
print(f”{colorama.Fore.LIGHTWHITE_EX}COLORAMA DEMOSU”)
print(f”{colorama.Fore.LIGHTYELLOW_EX}—————“)
print(f’\n\n{colorama.Fore.LIGHTCYAN_EX}Bu makale sayesinde Colorama\’yı {colorama.Back.LIGHTRED_EX}{colorama.Fore.LIGHTWHITE_EX}sular seller{colorama.Back.BLACK}{colorama.Fore.LIGHTCYAN_EX} gibi öğreneceksiniz.’)
Bu yöntemde colorama kodlarının, string formatlama tekniğinin sunduğu süslü parantez içinde değişken yazdırma özelliği kullanılarak metine renk vermesi sağlanmıştır.
Colorama Gelişmiş Renk Değiştirme Örneği
Colorama kütüphanesi, son derece gelişmiş konsol arayüzlerinde oldukça ön plana çıkmaktadır. Bu arayüzlerin bir örneği aşağıda verilmiştir.
Bu tarz bir menü genelde daha fazla kütüphane gerektirir ve daha kompleks bir algoritmaya sahiptir. Şimdi aşama aşama bu örneğin kodunu yazalım. Öncelikle gerekli kütüphaneleri import ederek başlayalım.
import keyboard #pip install keyboard
import colorama
import os
Bu örnek için bu üç kütüphane yeterli olacaktır. Daha sonra menüde gerekli olacak değerleri tutan bazı değişkenlere ihtiyacımız olacak. Bu değişkenler de şu şekilde tanımlanabilir:
selectedIndex = 0 #seçili menü seçeneğinin indisi
menuTexts = [ #Menü seçeneklerini tutan dizi
f”Bu bir konsol menü seçeneği”,
f”Bu başka bir konsol menü seçeneği”
]
Bunlardan selectedIndex değişkeni hangi menü seçeneğinin seçildiğini tutacak bir indis değeri alırken, menuTexts dizisi de menü seçeneklerini tutar. Bu örnek için bu dizi iki elemanlı olarak tanımlanmıştır, ancak gelişmiş bir konsol uygulama projeniz varsa siz bu sayıyı arttırabilirsiniz.
Bu örneğin çalışabilmesi için bir “while True:” döngüsü açtıktan sonra içine ilk metinler olarak şunları giriyoruz:
print(f”{colorama.Fore.LIGHTWHITE_EX}GELİŞMİŞ COLORAMA DEMOSU”)
print(f”{colorama.Fore.LIGHTYELLOW_EX}————————“)
print(f”\n{colorama.Fore.LIGHTWHITE_EX}Klavyedeki Yukarı Ok ve Aşagı Ok tuşları ile seçim yapabilirsiniz. Enter tuşu ile programı sonlandırabilirsiniz.\n”)
Şimdi bunun altında menü kodlarımızı yazıyor olacağız. Önce menü elemanlarımızı sırayla yazdıralım, ve seçili olan elemanı farklı gösterecek bir koşul yapısı ekleyelim.
for i in range(len(menuTexts)): #Menü seçeneklerini ekrana yazdırma
if i == selectedIndex: #seçili menü seçeneğinin ekrana yazdırılması
print(f”{colorama.Fore.LIGHTBLUE_EX}>{menuTexts[i]}”)
else: #seçili olmayan menü seçeneğinin ekrana yazdırılması
print(f”{colorama.Fore.LIGHTWHITE_EX}{menuTexts[i]}”)
Bu algoritmaya bakıldığında menü seçenekleri için bir dizinin kullanılmasının getirdiği kolaylık ortaya çıkmaktadır. Şimdi sırada seçim kodlarımızı yazmak var. Bunun için de yerleşik olmayan başka bir Python kütüphanesi olan keyboard’ı kullanıyoruz. Bu kütüphane klavye girdilerini okuyarak işlem yapmamıza yardımcı oluyor. Yukarı ok ve aşağı ok tuşlarıyla seçim yaptıracak, Enter tuşuyla da programı sonlandıracak bir algoritma yazıyoruz.
if keyboard.read_key() == “up”: #yukarı ok tusu ile seçim yapma
if selectedIndex > 0:
selectedIndex -= 1
os.system(“cls”)
elif keyboard.read_key() == “down”: #aşagı ok tusu ile seçim yapma
if selectedIndex < 1:
selectedIndex += 1
os.system(“cls”)
elif keyboard.read_key() == “enter”: #enter tusu ile programı sonlandırma
colorama.deinit()
break
Bu algoritma ile yukarıdaki sonucu elde edebiliriz.