5 En İyi Python TUI Kütüphanesi: Metin Tabanlı Kullanıcı Arayüzleri Oluşturma
Günümüzde kullanıcı arayüzleri genellikle grafiksel olarak tasarlanıyor. Ancak bazı durumlarda metin tabanlı arayüzler (TUI) daha pratik olabilir. Örneğin, komut satırı uygulamaları, sunucular ve terminal tabanlı oyunlar gibi durumlarda TUI tercih edilebilir. Python gibi çok yönlü bir programlama dili, TUI geliştirmek için mükemmel bir platform sunar.
Python ile TUI geliştirmek için pek çok kütüphane mevcuttur. Bu makalede, Python ile metin tabanlı arayüzler oluşturmak için en iyi 5 kütüphaneyi inceleyeceğiz. Ayrıca her bir kütüphanenin güçlü ve zayıf yönlerini de ele alacağız.
1. **TUI: curses**
Python’da TUI oluşturmanın en eski ve yaygın yöntemlerinden biri curses modülünü kullanmaktır. Bu, temel metin tabanlı arayüzler oluşturmak için bir dizi fonksiyon ve sınıf sunan bir standart kütüphanedir.
curses modülü, ekranı kontrol etmenizi, karakterler çizmenizi ve kullanıcı girişi almanıza olanak tanır. Bu, temel arayüzleri oluşturmak için mükemmel bir seçenektir. Bununla birlikte, curses, daha gelişmiş arayüzler oluştururken karmaşık hale gelebilir. Ayrıca, kullanımı platform bağımsızdır.
curses modülünü kullanarak basit bir menü örneği aşağıdadır:
“`python
import curses
def main(stdscr):
stdscr.clear()
stdscr.addstr(0, 0, “Ana Menü”)
stdscr.addstr(1, 0, “1. Seçenek 1”)
stdscr.addstr(2, 0, “2. Seçenek 2”)
stdscr.addstr(3, 0, “3. Çıkış”)
stdscr.refresh()
while True:
key = stdscr.getch()
if key == ord(‘1’):
stdscr.addstr(4, 0, “Seçenek 1 seçildi!”)
stdscr.refresh()
elif key == ord(‘2’):
stdscr.addstr(4, 0, “Seçenek 2 seçildi!”)
stdscr.refresh()
elif key == ord(‘3’):
break
else:
stdscr.addstr(4, 0, “Geçersiz seçim!”)
stdscr.refresh()
curses.wrapper(main)
“`
Bu örnek, basit bir menü oluşturur ve kullanıcının bir seçenek seçmesini bekler. Kullanıcı “1”, “2” veya “3” tuşlarına basarsa, ilgili eylem gerçekleştirilir.
curses modülünün avantajları:
- Standart Python kütüphanesinde yer alır, yani ek bir kurulum gerektirmez.
- Platform bağımsızdır, yani farklı işletim sistemlerinde çalışabilir.
- Temel metin tabanlı arayüzleri oluşturmak için kullanımı kolaydır.
curses modülünün dezavantajları:
- Daha gelişmiş arayüzler oluştururken karmaşık hale gelebilir.
- Görsel olarak çekici arayüzler oluşturmak için uygun değildir.
2. **TUI: Urwid**
Urwid, Python için popüler bir TUI kütüphanesidir. curses‘e göre daha yüksek seviyeli bir API sağlar, bu da daha karmaşık ve görsel olarak daha çekici arayüzler oluşturmayı kolaylaştırır.
Urwid, pencereler, düğmeler, metin kutuları ve listeler gibi çeşitli widget’lar sunar. Bu widget’ları kullanarak etkileşimli ve kullanıcı dostu arayüzler oluşturabilirsiniz.
Urwid‘i kullanarak basit bir menü örneği aşağıdadır:
“`python
import urwid
def exit_on_q(key):
if key in (‘q’, ‘Q’):
raise urwid.ExitMainLoop()
def menu_button_clicked(button):
response = urwid.Text(“You clicked: ” + button.label)
loop.widget = urwid.Filler(response)
buttons = [
urwid.Button(“Seçenek 1”, menu_button_clicked),
urwid.Button(“Seçenek 2”, menu_button_clicked),
urwid.Button(“Çıkış”, exit_on_q)
]
menu = urwid.GridFlow(buttons, 20, 4, 1, ‘center’)
top = urwid.Filler(menu, valign=’top’)
loop = urwid.MainLoop(top, unhandled_input=exit_on_q)
loop.run()
“`
Bu örnek, üç düğmeli basit bir menü oluşturur. Kullanıcı düğmelerden birini tıkladığında, ilgili eylem gerçekleştirilir. “Çıkış” düğmesi, uygulamayı sonlandırır.
Urwid kütüphanesinin avantajları:
- Yüksek seviyeli API’si, daha karmaşık arayüzleri oluşturmayı kolaylaştırır.
- Çeşitli widget’lar sunar, bu da esnek ve özelleştirilebilir arayüzler oluşturmanıza olanak tanır.
- Renk desteği ve diğer görsel efektler sağlar.
Urwid kütüphanesinin dezavantajları:
curses‘den daha karmaşık olabilir, bu da öğrenme eğrisini artırabilir.- Bazı widget’lar, tüm platformlarda tutarlı görünmeyebilir.
3. **TUI: PyInquirer**
PyInquirer, terminal uygulamalarında etkileşimli menüler ve sorgulamalar oluşturmak için tasarlanmış bir Python kütüphanesidir. Kullanıcı dostu arayüzler oluşturmak için çeşitli seçenek menüsü, onay kutuları ve metin girişi gibi widget’lar sunar.
PyInquirer, PromptToolkit üzerine kuruludur, bu da etkileşimli komut satırı uygulamaları oluşturmak için güçlü bir kütüphanedir.
PyInquirer‘i kullanarak basit bir menü örneği aşağıdadır:
“`python
from pyinquirer import inquirer
questions = [
{
‘type’: ‘list’,
‘name’: ‘secenek’,
‘message’: ‘Bir seçenek seçin:’,
‘choices’: [‘Seçenek 1’, ‘Seçenek 2’, ‘Çıkış’]
}
]
answers = inquirer.prompt(questions)
if answers[‘secenek’] == ‘Seçenek 1’:
print(“Seçenek 1 seçildi!”)
elif answers[‘secenek’] == ‘Seçenek 2’:
print(“Seçenek 2 seçildi!”)
elif answers[‘secenek’] == ‘Çıkış’:
print(“Uygulama sonlandırılıyor…”)
“`
Bu örnek, kullanıcının bir seçenek seçmesini sağlayan basit bir menü oluşturur. Kullanıcı seçeneklerden birini seçtiğinde, ilgili eylem gerçekleştirilir.
PyInquirer kütüphanesinin avantajları:
- Kullanıcı dostu ve etkileşimli arayüzler oluşturmak için kullanımı kolaydır.
- Çeşitli widget’lar sunar, bu da uygulamanız için farklı soru türleri oluşturmanıza olanak tanır.
- Güçlü
PromptToolkitkütüphanesi üzerine kuruludur, bu da ek özellikler sağlar.
PyInquirer kütüphanesinin dezavantajları:
- Karmaşık arayüzler oluşturmak için uygun değildir.
- Kullanıcı deneyimi, platformlar arasında biraz farklılık gösterebilir.
4. **TUI: Prompt Toolkit**
Prompt Toolkit, etkileşimli komut satırı uygulamaları oluşturmak için kullanılabilen güçlü bir Python kütüphanesidir. PyInquirer gibi, Prompt Toolkit de kullanıcı dostu arayüzler oluşturmak için bir dizi widget ve özellik sunar.
Prompt Toolkit, temel metin düzenleme desteği, tamamlama, renklendirme ve daha fazlası gibi özellikler sağlar. Prompt Toolkit, karmaşık komut satırı uygulamaları ve etkileşimli arayüzler oluşturmak için mükemmel bir seçenektir.
Prompt Toolkit‘i kullanarak basit bir menü örneği aşağıdadır:
“`python
from prompt_toolkit import prompt
from prompt_toolkit.completion import WordCompleter
choices = [‘Seçenek 1’, ‘Seçenek 2’, ‘Çıkış’]
completer = WordCompleter(choices)
answer = prompt(‘Bir seçenek seçin: ‘, completer=completer)
if answer == ‘Seçenek 1’:
print(“Seçenek 1 seçildi!”)
elif answer == ‘Seçenek 2’:
print(“Seçenek 2 seçildi!”)
elif answer == ‘Çıkış’:
print(“Uygulama sonlandırılıyor…”)
“`
Bu örnek, kullanıcının bir seçenek seçmesini sağlayan basit bir menü oluşturur. Kullanıcı seçeneklerden birini seçtiğinde, ilgili eylem gerçekleştirilir. Bu örnek ayrıca Prompt Toolkit‘in tamamlama özelliğini gösterir.
Prompt Toolkit kütüphanesinin avantajları:
- Etkileşimli komut satırı uygulamaları oluşturmak için güçlü ve esnek bir kütüphanedir.
- Tamamlama, renklendirme ve diğer özellikler sağlar, bu da kullanıcı deneyimini iyileştirir.
- Kullanıcı girdisini özelleştirmek için geniş seçenekler sunar.
Prompt Toolkit kütüphanesinin dezavantajları:
- Karmaşık arayüzler oluşturmak için kullanımı zor olabilir.
- Daha karmaşık arayüzler için daha fazla kodlama gerektirebilir.
5. **TUI: Rich**
Rich, terminal çıktısını zenginleştirmek için tasarlanmış bir Python kütüphanesidir. Rich, renkli metin, tablolar, paneller, ilerleme çubukları ve daha fazlasını görüntülemek için bir dizi araç sunar. Rich, TUI’ler oluşturmak için mükemmel bir seçimdir çünkü arayüzleri daha görsel olarak çekici hale getirmenize olanak tanır.
Rich‘i kullanarak basit bir menü örneği aşağıdadır:
“`python
from rich import print
print(“[bold blue]Ana Menü[/]”)
print(“[bold green]1. Seçenek 1[/]”)
print(“[bold green]2. Seçenek 2[/]”)
print(“[bold red]3. Çıkış[/]”)
secenek = input(“Bir seçenek seçin: “)
if secenek == ‘1’:
print(“Seçenek 1 seçildi!”)
elif secenek == ‘2’:
print(“Seçenek 2 seçildi!”)
elif secenek == ‘3’:
print(“Uygulama sonlandırılıyor…”)
“`
Bu örnek, Rich‘i kullanarak basit bir menü oluşturur. Menü öğeleri renklendirilmiş olarak görüntülenir, bu da onları daha görsel olarak çekici hale getirir. Rich‘in diğer özellikleri de kullanılabilir, örneğin tablolar, paneller ve ilerleme çubukları.
Rich kütüphanesinin avantajları:
- Terminal çıktısını zenginleştirmek için kullanımı kolaydır.
- Çeşitli renkler, tablolar, paneller ve ilerleme çubukları sağlar.
- TUI’ler oluşturmak için kullanılabilir, ancak ayrıca günlükleri ve diğer çıktıları daha görsel olarak çekici hale getirmek için de kullanılabilir.
Rich kütüphanesinin dezavantajları:
- Diğer TUI kütüphaneleri kadar özel widget’lar sunmaz.
- Bazı widget’lar, tüm platformlarda tutarlı görünmeyebilir.
Sonuç
Bu makalede, Python’da TUI geliştirmek için 5 en iyi kütüphaneyi inceledik. curses, temel TUI’ler oluşturmak için iyi bir seçenektir. Urwid, daha karmaşık ve görsel olarak daha çekici arayüzler oluşturmak için daha iyi bir seçimdir. PyInquirer, etkileşimli menüler ve sorgulamalar oluşturmak için idealdir. Prompt Toolkit, karmaşık komut satırı uygulamaları ve etkileşimli arayüzler oluşturmak için mükemmel bir seçenektir. Rich, terminal çıktısını zenginleştirmek için kullanımı kolaydır.
Hangi kütüphaneyi seçeceğiniz, projenizin özel ihtiyaçlarına bağlıdır. Örneğin, basit bir arayüz oluşturmak için curses yeterli olabilir. Ancak, daha karmaşık ve görsel olarak daha çekici bir arayüz oluşturmak için Urwid veya Prompt Toolkit kullanmanız gerekebilir.
Metin tabanlı arayüzleri oluşturmak, çeşitli uygulamalar için etkili bir yol olabilir. Python, çeşitli TUI kütüphaneleriyle, bu arayüzleri oluşturmak için güçlü bir seçenektir. Bu kütüphaneleri kullanarak, etkileşimli ve kullanıcı dostu metin tabanlı uygulamalar oluşturabilirsiniz.
Daha fazla bilgi için curses, Urwid, PyInquirer, Prompt Toolkit ve Rich belgelerine bakabilirsiniz. Ayrıca, Python TUI geliştirme hakkında daha fazla bilgi edinmek için internette arama yapabilirsiniz.
Benim bloguma fatihsoysal.com adresinden ulaşabilirsiniz.
#Etiketler
Python, TUI, Kullanıcı Arayüzü, curses, Urwid, PyInquirer, Prompt Toolkit, Rich, Metin Tabanlı, Arayüz, Geliştirme, Programlama
