Textual - Python için hızlı uygulama geliştirme framework'ü
(github.com/Textualize)- Textual, basit bir Python API'si ile çapraz platform kullanıcı arayüzleri oluşturmayı ve uygulamaları terminalde veya web tarayıcısında çalıştırmayı sağlayan bir framework'tür
- API, modern Python ile web geliştirmenin ilerlemelerini birleştirir; ayrık bileşenler ve gelişmiş bir test framework'ü sayesinde uzun vadeli bakım desteği sunar
- Widget kütüphanesi; düğmeler, ağaç kontrolleri, veri tabloları, giriş alanları, metin alanları ve daha fazlasını sunar; ayrıca esnek bir yerleşim sistemi ve ön tanımlı temalar sağlar
- Dahili olarak asenkron bir frameworktür; istenirse async kütüphaneleriyle entegre olabilir, ancak async kullanımını zorunlu kılmaz
pip install textual textual-devile kurulabilir vepython -m textualile demo çalıştırılabilir- Kurulum yapmadan
uvx --python 3.12 textual-demoile textual demo çalıştırılabilir; bu yöntem için uv gereklidir
- Kurulum yapmadan
textual-devpaketi, başka bir terminalden uygulamaya bağlanan bir geliştirme konsolu sunar; sistem mesajları, olaylar, log mesajları veprintçıktılarının görüntülenmesini destekler- Textual uygulamaları, bulanık arama destekli bir komut paleti sunar;
ctrl+pile açılabilir ve uygulamaya özel özel komutlarla genişletilebilir textual serve "python -m textual"ile Textual uygulamaları web'de sunulabilir; Textual Web, yerel sunumun yanı sıra uygulama sunumunu da destekler- Textual uygulamaları düşük sistem gereksinimlerine sahiptir, Python'ın çalıştığı her yere kurulabilir ve masaüstü ortamı gerektirmez
1 yorum
Hacker News yorumları
Şu anda en sevdiğim Textual demosu https://github.com/1j01/textual-paint
Terminalde çalışan oldukça iyi bir Microsoft Paint taklidi
Yeni bir Python projesi oluştururken ilk eklediğim şeylerden biri https://github.com/Textualize/rich oldu
Terminal çıktısını güzel göstermek çok kolay olduğu için onu seçtim
Buna karşılık Rich harika ve geliştirme akışını çok akıcı hale getiriyor. Kalın yazı, renk, emoji, tablo gibi özellikleri hemen kullanmaya yarayan iyi bir API sunmasını seviyorum
Oldukça havalı görünüyor
Eskiden çalıştığım trading şirketinde önemli süreçler için metin tabanlı UI yaparken lanterna(https://github.com/mabe02/lanterna/tree/master) kullanmıştık. Güncellenmiş piyasa verilerini alıp önceki işlem seansı ile bugün arasında değişen şeyleri, örneğin hisse adının değişmesi (PCLN’den BKNG’ye), piyasa değeri değişimi nedeniyle kategori değişikliği gibi işleri işleyen bir süreçti
Bunlar gerçek zamanlı sistemin işlemediği ama çok sık olan ya da elle ele almak için zahmetli görevlerdi. Şirkette trading personeli için masaüstü UI vardı ama sunucu UI’ı diye bir kavram yoktu ve sunucular headless çalışıyordu
Frontend geliştiricisi yoktu; backend, sistem ve veri programcıları arada frontend’e dokunuyordu. Bu yüzden web UI’ları ya çok basitti ya da belirli bir amaca özel hazırlanmıştı; ortak araç da yoktu
2023 olsaydı create-react-app veya next.js tarafını seçmiş olabilirdim, ama nöbet sırasında tethering ile bağlandığım berbat bir 4G SSH bağlantısından da kolayca erişmek istediğim için X11 forwarding veya RDP’yi eledim. Bu yüzden projenin dili olan Java’da kullanabileceğim bir TUI builder aradım
Lanterna’yı sevmemin nedeni, Swing tabanlı bir implementasyonu olması sayesinde IntelliJ içinde doğrudan çalıştırıp hızlı yineleme yapabilmem ve üretim ortamında sunucunun bulunduğu makinede SSH üzerinden terminalde çalıştırabilmemdi
Textual’ı da izlemeye devam edip onunla iyi bir şey yapabilir miyim bakacağım. Web uygulamalarını hâlâ pek sevmiyorum; çünkü sonuç almak için, tarayıcı olmayan bir TUI ya da masaüstü GUI ile yapılmış işlevsel olarak eşdeğer bir ürüne kıyasla çok daha fazla emek istiyor gibi geliyor
Ne yazık ki “hızlı uygulama geliştirme” ifadesi kütüphanenin kendisi için de geçerli gibi
İki haftada bir yeni sürüm çıkıyor ve biraz öngörmesi zor yerlerde bozulmalar oluyor. Textual ile prototip yapmak kolay, ama sonrasında bakım yapmak zor
Yine de hâlâ 0.x sürümünde olduğu sürece, bazı alanlarda daha iyi bir yaklaşım netleştiğinde yönü biraz değiştirebilmenin avantajından olabildiğince yararlanıyoruz
Yeni sürüm çıkarırken kırıcı değişiklikleri olabildiğince görünür şekilde duyurmaya çalışıyoruz. Etrafından dolaşması zor ya da tekrar çalışır hale getirmesi güç bir yer varsa GitHub issue’larında, tartışmalarda veya isterseniz Discord’da yardım isteyebilirsiniz
Python’da çok deneyimli bir geliştirici değilim, o yüzden soruyorum: Bunu büyük bağımlılıklar olmadan bir binary haline getirmek ne kadar kolay?
Windows ve Linux için ürün kurulum paketleri hazırlamaya yardımcı olacak bir şey arıyorum. Müşterinin yazılımı kurmadan önce/sonra INI dosyası yazma, DB bağlantısını kontrol etme, HTTP sunucusunu kontrol etme gibi yapılandırma işleri gerekiyor
Güzel görünüyor. Az önce unicurses ve Python ile dahili DevOps ve değişiklik yönetimi uygulaması yaptım; çalışıyor ama pek ölçeklenebilir olmayacak gibi
Başta TK ve QT denedim, ama ikisinin de ilk kurulumunda kendine özgü pürüzler vardı. QT iyi çalışıyor, ancak faydalı dokümantasyon biraz eksik
Textual gereksinimlere tam uyuyor gibi görünüyor; mutlaka deneyeceğim
Hızlıca göz atıp https://textual.textualize.io/tutorial/ ve https://github.com/Textualize/textual/blob/main/docs/example... sayfalarına baktım
Go tarafında neleri başarıyla kullandığınızı merak ediyorum. Textualize’ın çekici yanı, epey web tarayıcısı gibi hissettirmesi ve kaydırılabilir tablo görünümüne kadar temiz olması
tviewde ilginç görünüyor, ama örneğinbrew install dbuiye bakınca bildirimsel ve iç içe navigasyondan çok,if KeyPress.A: do_something()gibi emir kipinde işlemeeyi kendiniz yapıyormuşsunuz hissi daha baskınBelki de bu, “her şeyi kontrol eden” uygulama merkezli/SPA bakışı ile “sayfaya bileşenler ekleyip akmasına izin veren” belge merkezli bakış arasındaki farktır. Bu listedeki öğeler hakkında geri bildirimleri merak ediyorum: https://codeberg.org/tecras/awesome-go#advanced-console-uis
if KeyPress.A: do_something()gibi emir kipinde işlemleri kendiniz yapıyorsunuz” derken, bugünlerde moda olduğu gibi mesaj döngüsünü gizlemek yerine gerçekten kontrol etmenize izin verdiğini mi kastediyorsunuz?https://github.com/gizak/termui
Lazarus/Freepascal doğru cevap. Geri kalanı gerilemeye yakın
Bu animasyonlar ve geçiş efektleri tamamen saf ASCII metinle mi uygulanmış?
Ciddi konuşursak “easing” ve geçiş özelliklerine bir bakmaya değer. 500 ms civarında bir gecikme deneyimli kullanıcılar için can sıkıcıdır, ama uygulama navigasyonunu öğrenirken bağlam sağlamaya yardımcı oluyor gibi
Bu tür projeler nasıl sürdürülebiliyor merak ediyorum
Bu proje 2 yıldır geliştiriliyor ama gelir kaynağı görünmüyor. Geliştiricilerin herhangi bir biçimde karşılık alıp almadığını merak ediyorum
https://www.willmcgugan.com/blog/tech/post/from-open-source-...
Pazarı da hesaba katmak gerek. 2023’te terminal widget kütüphanesi kullanmak için para ödeyecek kişi kelimenin tam anlamıyla neredeyse yok