4 puan yazan GN⁺ 2023-12-11 | 1 yorum | WhatsApp'ta paylaş
  • PySimpleGUI, ticarileştirme girişimini tamamladıktan sonra PySimpleGUI 5 kodundan lisans ve güvenlik bileşenlerini kaldırdı; GitHub ve PyPI’da LGPL3 lisansı ile PySimpleGUI 6 olarak yeniden yayımlandı
  • En yeni sürüm python -m pip install PySimpleGUI ile kurulabiliyor; eski sürüm 4.60.5.1 ya da GitHub’daki master ve belirli sürüm 6.1 de pip ile doğrudan kurulabiliyor
  • PySimpleGUI, tkinter gibi GUI kütüphaneleri için bir wrapper olarak tanıtılıyor; GUI SDK’larını daha basit ve yoğunlaştırılmış bir yapıya dönüştürürken ayrıntılı özelleştirme sunuyor ve önceden GUI programlama deneyimi gerektirmediği belirtiliyor
  • 6.2 sürümünde Window.settings_save hata düzeltmesi, Multiline içinde görsellerin satır içi çıktısı, psgupgrade, Tree düğümlerinin programatik seçimi, Window.start_timer için "H:M:S" string zamanlayıcısı, Frame kenarlık rengi ayarı gibi yenilikler yer alıyor
  • Proje pull request kabul etmeyen bir yöntemle sürdürülecek; uzun vadeli geleceği belirsiz olsa da yazar kod yazmaya ve ekosistemi düzenlemeye devam edeceğini belirtiyor

PySimpleGUI 6’nın yeniden açık kaynak hâline gelmesi

  • PySimpleGUI bir ticarileştirme girişiminde bulundu, ancak projeyi beklenen düzeyde sürdürmek için gerekli kaynakları oluşturamadı
  • Şubat 2025’te PySimpleSoft’un kapanacağı ve desteğin 2025 sonuna kadar süreceği duyuruldu; sonrasında kod, belgeler ve depolarla ne yapılacağı çözülmesi gereken konu olarak kaldı
  • PySimpleGUI 5 kodu, lisans ve güvenlik bileşenleri kaldırıldıktan sonra GitHub ve PyPI’da yayımlandı
  • Yeni yayımlanan sürüm LGPL3 lisansını kullanıyor
  • Udemy kursu bir süre ücretsiz sunulacak; kupon kodu 033334A16163C571B739

Kurulum yöntemleri

  • PyPI’daki en yeni v6 sürümünü kurma:
    • python -m pip install PySimpleGUI
  • Eski sürüm 4.60.5.1 kurulumu:
    • python -m pip install PySimpleGUI==4.60.5.1
  • GitHub deposundaki en yeni kod doğrudan kurulabilir:
  • GitHub’daki belirli bir sürümü kurmak için master yerine sürüm numarasını yazın:
  • Depoyu klonladıktan veya indirdikten sonra yerel kurulum da yapılabilir:
    • python -m pip install .

PySimpleGUI’nin rolü

  • PySimpleGUI, tkinter ve diğer GUI kütüphanelerini saran bir wrapper’dır
  • GUI SDK’larını daha basit ve yoğunlaştırılmış bir yapıya dönüştürürken ayrıntılı özelleştirme de sunar
  • Önceden GUI programlama deneyimi gerektirmediği belirtiliyor
  • README’deki örnek, yalnızca Text, Input, Button, Window, olay döngüsü, window.read() ve window.close() kullanarak etkileşimli bir pencere uygulaması oluşturuyor
  • Belgeler Docs.PySimpleGUI.com adresinde sunuluyor

Geliştirme biçimi ve uzun vadeli görünüm

  • PySimpleGUI’nin geleneksel bir açık kaynak projesinden çok özel mülk bir ürüne daha yakın bir biçimde geliştirildiği açıklanıyor
  • Pull request kabul edilmiyor
  • Uzun vadeli geleceği kesin değil; ancak mevcut yazar kod yazmaktan ve yardımcı olmaktan keyif alıyor
  • PySimpleGUI deneyimi, insanların ortaya çıkardığı işleri görmeyi sağlayan “hayatta bir kez yaşanacak” bir deneyim olarak ifade ediliyor

6.2 sürümündeki özellikler ve düzeltmeler

  • 6.2, Window.settings_save hata düzeltmesini içeriyor
  • Multiline öğesinde görselleri satır içinde “print” etme özelliği eklendi
  • En yeni bakım sürümüne yükseltme özelliği yeniden PySimpleGUI’ye yerleşik olarak eklendi
    • Home Window veya komut satırından psgupgrade kullanılabiliyor
    • Sürüm notları görülebiliyor ve yeni sürüm kurulabiliyor
  • Graph olayının write_event_value olayı aldığında sonsuz döngüye girmesine yol açan #5750 hatası düzeltildi
    • Düzeltme, gerçek zamanlı düğme bayrağını temizleme yöntemiyle yapıldı
    • Değişiklik kapsamının Graph öğesi koşul ifadesiyle sınırlı olduğu ve regresyon olasılığının düşük olduğu yazıyor
  • Tree.update içine select_node_keys parametresi eklendi; böylece tree düğümleri kullanıcı seçmiş gibi programatik olarak seçilebiliyor
  • Multiline’ın echo_stdout_stderr özelliği ve parametresi düzeltildi
    • Yalnızca stdout veya stderr ilgili öğeye yeniden yönlendirilmişse echo yapıyor
    • Bu özellik doğrudan yeniden yönlendirme yapmıyor
  • #6686 düzeltmesiyle Calendar chooser düğmesinin, yalnızca window.read dönüş anında temizlenmesi gereken alanları temizlemesi sorunu giderildi
  • Home Window’da bakım sürümü numarası gösteriliyor ve kurulum düğmesinin konumu taşındı
  • Window.start_timer çağrısında zamanlayıcı "H:M:S" string’iyle belirtilebiliyor
  • Kaydırılabilir Column öğesine yalnızca yatay kaydırmayı destekleme özelliği eklendi
  • Frame öğesine border_color ve border_width_no_relief parametreleri eklendi; böylece kenarlık rengi ayarlanabiliyor
    • Frame kenarlık rengi için ayrı bir ayar yoksa varsayılan olarak metin öğesi rengi kullanılıyor
  • Belgelerdeki call reference bölümü 6.2 sürümüne göre güncellendi

Sürükle-bırak ve çevre projeler

  • Sürükle-bırak uzun süredir istenen bir özellikti; bunun PySimpleGUI kodunda değişiklik yapmadan kullanıcı kodu alanında uygulanmasının bir yolu bulunduğu açıklanıyor
  • psgdnd, PySimpleGUI’ye sürükle-bırak ekleyen yeni bir paket
    • pip ile kurulup kullanılabiliyor
    • Daha fazla bilgi ve örnekler ilgili depoda yer alıyor
  • psgdnd 6.0.1 PyPI’da yayımlandı ve Windows’ta çalışıyor
  • GitHub’daki 6.0.2, Linux için gereken düzeltmeyi içeriyor
  • Mac destek durumu henüz bilinmiyor
  • PSGMicroPython deposuna MicroPython tabanlı mikrodenetleyicilerle arayüz kuran kod eklendi
    • Raspberry Pi Pico ve ESP32’de çalışıyor
    • Başka kartlarda da çalışabilir
    • Sağlam veya büyük bir proje olarak tasarlanmadığı, faydalı olabilecek kodlar olduğu belirtiliyor

PSGWeb prototipi

  • PSGWeb, PySimpleGUI’yi tarayıcı penceresinde çalıştıran bir prototip
  • Demo programlarının çoğuyla çalışıyor
  • GitHub’daki bir PySimpleGUI uygulamasının URL’sinin başına psgweb.us eklenerek çalıştırma denenebiliyor
  • PSGWeb, daha büyük PSG 5 çalışmasının bir parçası olarak oluşturuldu, ancak yayımlanmadı
  • Bu prototipi yayımlama veya genişletme planı yok

Yapay zeka kullanımına dair tutum

  • Yazar LLM’leri belge arama ve özetleme, hata sorgulama, araştırma ve bilgi edinme için kullanıyor
  • LLM ile kod yazmıyor
  • Bunun nedeninin basitçe kod yazma eylemini sevmesi olduğunu belirtiyor
  • Projeyi pull request’lere açmamasının da başkasının kod yazmasındansa kodu bizzat yazmak istemesi nedeniyle olduğunu açıklıyor
  • PySimpleGUI’nin yapay zeka çağında hâlâ ilgili olup olmadığı konusunda, her gün insanların PySimpleGUI’yi keşfedip kurmasını ve en az bir kişinin kullanmasını yeterli görüyor
  • Yazar, Windows uygulamaları geliştirirken PySimpleGUI olmadan bunu hayal etmenin zor olduğunu söylüyor
    • Yakın zamanda yaptığı 6502 breadboard bilgisayar çalışmasında, iki Raspberry Pi Pico ve bir PySimpleGUI uygulamasıyla bir bus analyzer geliştirdiğini açıklıyor
    • Windows’ta araçları kontrol eden bir frontend uygulamasını PySimpleGUI ile kolayca oluşturabildiğini söylüyor

Proje geçmişi ve finansman sorunu

  • PySimpleGUI, 2018’de bir medya oynatıcı prototipi için GUI’ye ihtiyaç duyulmasıyla yazılan tek seferlik kod olarak başladı
  • Hedef, nesne yönelimli GUI framework deneyimi olmadan da Tkinter’ı daha doğrusal ve sezgisel bir şekilde sararak hızlıca çalışır hâle getirmekti
  • Yazar, Python veya açık kaynak deneyimi olmadan projeyi GitHub’a koydu ve geleneksel bir açık kaynak projesinden çok bir startup gibi yaklaştı
  • Zaman çizelgesi:
    • Temmuz 2018: Version 1
    • Haziran 2019: Version 4
    • Ocak 2020: Finansman sorunu temel endişe hâline geldi ve ticarileştirme gündeme geldi
    • Kasım 2020: Udemy kursu duyuruldu ve kamuya açık yardım çağrısı eklendi
    • Aralık 2021: Kurs yayımlandı
    • Şubat 2024: Version 5 ticari olarak yayımlandı
    • Nisan 2026: Version 6
  • GitHub’daki Announcements Issue, proje geçmişini kaydeden bir blog gibi kullanıldı ve 1.700’den fazla girdiye ulaştı
  • Okunabilirliği artırmak için belgelerdeki Announcements 2018-2024 sekmesine bir anlık görüntü yayımlandı
  • Tam zamanlı açık kaynak çalışması, ani ve sürekli bir finansal baskı yarattı
  • Sponsorluk ve bağışlar GitHub Sponsors ve Buy Me a Coffee üzerinden en yüksek noktada bile ayda yaklaşık 150 dolar seviyesindeydi
  • 61 ders ve 11,5 saatlik Udemy kursu başlangıçta kısa süreliğine ayda yaklaşık 2.000 dolara kadar çıktı, ancak sonra 100 doların altına düştü
  • Her iki yöntem de projeyi uzun vadede sürdürmek için yeterli olmadı

Ticarileştirme sonucu ve lisans deneyimi

  • Version 5’in ücretli ürün olarak yayımlanması ani bir karar değildi; README ve duyurularda yıllar boyunca açıkça tartışılmıştı
  • 2024 başında diğer seçenekler tükendikten sonra ticari sürüm yayımlandı
  • Amaç engeller koymaktan çok erişilebilirliği korumaktı
  • Finansal sürdürülebilirlik ölçütüne göre iyi gitmedi, ancak deneyim, öğrenme ve ilişkiler açısından değerli olduğu sonucuna varıldı
  • Ticarileştirme sonrasında kullanıcıların çoğu kaybedilmedi ve birçok şirket PySimpleGUI kullanmaya devam etti
  • Sorun, şirketleri lisans satın almaya yönlendirmekti
  • Hobi kullanıcıları ve öğrencilerin ücretsiz kullanıp şirketlerin ücret ödediği Hobbyist License seçildi
  • Pratikte kullanıcıların büyük çoğunluğu kendini hobi kullanıcısı olarak tanımladı
  • On binlerce kurumsal kullanıcı ücretsiz katmana kaydoldu; büyük şirketlerde bile yüzlerce kullanıcı varken ücretli lisansların az sayıda olması nadir değildi
  • Ücretsiz seçenek sunma kararından pişman olunmadığı belirtiliyor
  • Kişisel sonuç, Python araçları ve kütüphanelerinin ücretsiz olması gerektiğine dair kültürel beklentinin güçlü olduğu
  • Fiyatın veya şikâyetlerin temel sorun gibi görünmediği; insanların PySimpleGUI’yi kullanmaya devam ettiği ama ücret ödeme yükümlülüğü hissetmediği yorumlanıyor
  • Açık lisans koşulları da davranışı her zaman değiştiremedi

Mevcut lisans

  • Telif hakkı ibaresi Copyright 2018-2026 PySimpleGUI. All rights reserved. şeklinde
  • Mevcut lisans LGPL3

1 yorum

 
GN⁺ 2023-12-11
Hacker News yorumları
  • İş gereği Jira'ya çalışma süresi kaydı girmem gerekiyordu; web sitesini sürekli açık tutmak istemiyordum, üzerinde çalıştığım issue'yu bulmak, süre kaydı bağlantısını bulmak ve yorum eklemek de yavaştı.
    Bana atanmış issue listesini ve yorum/çalışma süresi ekleme düğmelerini gösteren bir masaüstü uygulaması istiyordum. Tkinter ile iyi görünen bir şey yapmak için epey uğraştım ama PySimpleGUI'yi keşfettikten sonra Jira API hook'larını bağlayıp istediğimi yapabildim; UI geliştirmeyi öğrenmek için iyi bir projeydi.

    • Jira o kadar yaygın biçimde yavaş hissi veriyor ki birçok kişi özel araçlarla etrafından dolaşmaya çalışıyor gibi.
      Bir arkadaşım da bir iş yerinde temel Jira işleri için şirket içi bir Qt istemcisi yaptığını söylemişti; ben de Jira ile iş takibi yapmak zorunda kaldığımda https://github.com/go-jira/jira kullanarak değişiklik işlerini birkaç konsol script'iyle halletmiştim.
    • İş yerinde Jira süre kaydı tutmaya başlayacaklarını söyleyince yeni iş aramaya başladım.
    • Bu uygulamanın kaynak kodunun bir yerde açık olup olmadığını merak ediyorum. Bu hafta benzer bir şey yapmayı düşünüyordum; mevcut bir uygulamaya sadece Jira instance'ını gösterebilsem gerçekten harika olurdu.
    • Bunun gerçekten UI geliştirme öğrenimi olup olmadığından şüpheliyim. Daha zorlu projelere de götürür mü ya da genişletilebilir mi, pek emin değilim.
  • Böyle GUI framework'leri beni gerçekten heyecanlandırıyor. Yerel masaüstü deneyimi, webview bileşimlerinden çok daha iyi; PySimpleGUI'nin sadeleştirilmiş event loop'u ve çoklu backend yaklaşımı da bence gerçekten yeni.
    Yine de, sadece veri yapısı ve fonksiyonlar verildiğinde onları manipüle etmeye uygun bir arayüzü otomatik oluşturan “otomatik GUI”lerin neden daha fazla olmadığını merak ediyorum. Panelleri dikey/yatay mı yerleştireceğini, sekmeli arayüz mü yoksa popup mı kullanacağını heuristic'lerle seçse, CLI için fazla iç içe kalan ama web uygulaması yapmaya değmeyecek kadar yerel özellik gerektiren pek çok işi mümkün kılabilir.

    • İlginizi çekebilecek bir proje olarak Gooey, “neredeyse tüm Python 3 konsol programlarını tek satırla GUI uygulamasına dönüştürdüğünü” söylüyor.
      https://github.com/chriskiehl/Gooey
    • 2011'de fonksiyon argümanlarına dayalı, web için bir otomatik form üreticisi yapmıştım; yakın zamanda D dili tabanlı bir GUI toolkit'inde de benzer bir şeyi biraz denedim.
      Bir struct tanımlayıp dialog fonksiyonuna verdiğinizde, struct alanlarına göre otomatik olarak bir iletişim kutusu oluşturmasını ve kullanıcı OK'e bastığında callback çağırmasını sağlayabiliyorsunuz. Kullanıcı tanımlı attribute'larla hangi widget'ın kullanılacağını da belirleyebiliyorsunuz; örneğin bir int'e @ControlledBy!VerticalSlider(0, 100) eklerseniz sayı giriş kutusu yerine 0–100 arası bir slider oluyor. Menü fonksiyonlarına da @menu("Search") Find(string text) { ... } gibi ekleyerek menü ve iletişim kutularını otomatik oluşturabiliyorsunuz; her değişiklik event'inde callback çağıran DataControllerWidget da var. Birkaç yıl önce bununla ilgili bir yazı da yazmıştım ama ilerleme çok yavaş: http://dpldocs.info/this-week-in-d/Blog.Posted_2020_11_02.ht...
      Üzerinde daha fazla zaman harcamak isteyecek kadar ilginç ama ana işimde kullanacak bir yer olmadığı için yalnızca hafta sonu kod yazmak istediğimde azar azar ilgilenebiliyorum.
    • Bu tanıma uyan, onlarca yıl önce Naked Objects diye bir şey vardı. Java tarafına ilgim olmadığı için denemedim ama faydalı görünüyordu.
    • Python'da TraitsUI fena olmayan bir “otomatik UI” idi ve bugün de bu rolü görüyor.
  • Örneklerin estetiği [0]'daki gibi doğrudan 90'lardan alınmış gibi görünüyor. Prototipler ya da CLI kullanamayanlar için iç araçlarda mükemmel ama iyi görünen bir UI gerektiğinde ne yapmak gerektiğini merak ediyorum.
    Performans açısından yerel UI her zaman iyi ama stil vermeyi web sayfalarına göre daha zor bulmuşumdur. Python GUI'de Flutter veya SwiftUI gibi, büyük uğraş gerektirmeden şık görünen stillendirilmiş component setinin karşılığı nedir, merak ediyorum.
    [0] https://raw.githubusercontent.com/PySimpleGUI/PySimpleGUI/ma...

    • İyi yapıp yapmama meselesi elbette var ama benim deneyimime göre “stillendirilmiş” UI, birçok yazılım ve kullanıcı için yazılımın kötüleşme nedenlerinden biriydi.
      En azından işletim sisteminin sağladığı varsayılan UI stili, insanların bir uygulamada öğrendiklerini diğerine taşımasını sağlar. Ben üstün bir UI tasarımcısı değilim; bu yüzden işletim sistemi varsayılanlarının benim aklıma gelebilecek şeylerden daha iyi olma ihtimali yüksek. Buna bir de pazarlamanın duymaktan korktuğu “yazılımımız eski görünüyor” sözü eklenince geliştirme maliyeti zaten taşınması zor bir seviyeye çıkıyor.
    • 90'lar hissi kendi başına sorun değil ama bu, 90'ların işletim sistemi görünümüyle de uyuşmuyor. Checkbox arka planı yanlış, üstteki başlık label'ı hizasız ve Exit düğmesinin konumu da tuhaf; genel olarak kötü tasarlanmış bir UI gibi görünüyor.
      90'larda da böyle yazılımlar vardı ama insanların genelde bahsettiği 90'lar estetiği bu değil. Windows 95 UI tasarımına çok emek verilmişti.
    • 90'lar görünümünün nesi sorun, bilmiyorum. Seveni de çok.
      Günümüz UI'larındaki geniş boşluklardan, düğmeye benzemeyen düğmelerden, kaybolan kaydırma çubuklarından ve hamburger menülerden daha çok hoşlanmıyorum.
    • Dış görünüş birinci öncelikse web sayfasını yenmek epey zor görünüyor.
      Frontend ve backend ayrımı da varsayılan olarak geliyor; ileride gerekirse uzaktan erişim de mümkün. Yerel uygulama gibi kullanmak isterseniz küçük bir Tkinter tarzı GUI'ye sadece “Open browser UI” düğmesi koymanız yeter. Çalıştırma düğmesi URL'ye token eklerse, aynı makinedeki başka bir kullanıcı olarak çalışan daemon'dan da korunabilirsiniz; ama bunu gerçekten yapan bir yer görmedim.
    • Sorun, Tkinter'ın en azından Windows'ta gerçekten 90'lar widget'ları temelli olması. PySimpleGUI temasını SystemDefaultForReal olarak değiştirseniz bile, yerel Windows widget'ları modern bir görünüme sahipken Tkinter hiç güncellenmediği için tuhaf görünüyor.
  • Fena görünmüyor. Ancak bu kütüphane zaten olgunlaştığı için büyük değişiklikler zor olabilir; yine de liste yerine sözlük kullanılsa iyi olurdu. Güncel Python sözlükleri ekleme sırasını hatırlıyor
    Eski iş yerimde PyQt üzerine çok daha ince bir sarmalayıcıyla benzer bir şey yapmıştık ve kodu da şaşırtıcı derecede azdı. Temel fark, özellik/sinyal ayarlarıyla widget iç içe yerleşimini birlikte ele almasıydı. Özellikleri yapıcıda ayarlamak yerine, daha sonra metni değiştirmek için widget adına ihtiyaç duyulsa bile görünüm tanımının gövdesinde özellikleri ayarlayabilmek gibi bir avantajı vardı. setup_view adlı tek bir fonksiyon tüm API idi ve basit GUI’leri hızlıca yapmak için oldukça kullanışlıydı. Bu kütüphane de iyi bir alternatif gibi görünüyor; paylaştığınız için teşekkürler

    • Bu değişiklik Python 3.7’de geldi ve artık 5 yıldan da eski bir özellik
      https://docs.python.org/3/whatsnew/3.7.html#summary-release-...
    • Son GUI framework eğilimlerine bakınca yerleşim ve verinin ayrılması çok daha temiz kod üretiyor
      Veri bağlamayı framework’e bırakmak daha iyi. Hem web hem masaüstü giderek bu yöne kayıyor. Widget’ları doğrudan değiştirmek yerine, widget özelliklerini bir veri deposuna bağlayıp değişiklik olduğunda otomatik yeniden render edilmesini sağlamalısınız. Sayfadaki giriş/çıkış örneği buna benzer bir şeyi gösteriyor. Artık kimse getElementById() kullanmıyor
    • GitHub sayfasına göre, “pencere tanımını, yeni başlayanların anladığı Python’un temel veri tipleri olan liste ve sözlükleri kullanarak basitleştirdiği” yazıyor
  • VB6 ya da Delphi/Lazarus’un kullanım kolaylığına yaklaşıyor gibi. Kesinlikle ilerleme var; artık yalnızca etkileşimli bir GUI builder olsa, oluşturulan formu #import edip doğrudan kullanmakla iş bitebilir
    Birkaç yıl önce WxPython ile WxFormBuilder’ı birlikte kullanmaya çalışırken bir projede inanılmaz zaman kaybettim. Formda küçücük bir değişiklik bile backend’in tamamını bozuyordu; araya ince bir bağlantı kodu kendim yazdım ama alan tipini değiştirince yine her şey bozuldu. Burada böyle şeyler olmayacak gibi, sevindirici

  • Python GUI uygulaması [1] geliştiren biri olarak, masaüstü uygulamalarda Python kullanırken en büyük sorunun paketleme olduğunu düşünüyorum
    Dağıtılabilir binary üretmeye yarayan mevcut araçlar, bağımlılık sayısı birkaç taneyi geçince çalışmayı bırakıyor ya da ciddi hack’ler gerektiriyor. Popüler paketlerde bile gizli import eksikleri veya farkında olunmayan veri dosyası eksikleri gibi anlaşılması zor sorunlar çıkıyor. Dinamik modül yükleme de PyInstaller veya cx_freeze gibi normal Python ortamının dışına taşınınca bazen bozulabiliyor. Ne yapılabilir bilmiyorum ama Python’un da Java’daki JAR gibi, yalnızca yorumlayıcıya bağımlı, bağımsız çalıştırılabilir program paketleme standardına ihtiyacı olabilir

    1. https://github.com/FreeLanguageTools/vocabsieve
    • Python’da standartlaştırılmış ve JAR’a benzeyen zipapp var: https://peps.python.org/pep-0441/
      shiv veya PEX gibi araçlarla uygulama bağımlılıklarını içeren zipapp oluşturabilirsiniz; ancak binary eklentiler varsa çıktı yine platforma özgü olur: https://github.com/linkedin/shiv#gotchas
      Ben Python programım için kullanıcılara pipx ile kurmalarını öneriyorum: https://github.com/pypa/pipx
      Hedef kullanıcılar az da olsa teknikse bence en iyi seçenek bu. pip install --user kaynaklı sürüm çakışmalarını ve uygulama başına sanal ortamı elle oluşturma zahmetini ortadan kaldırıyor; genel olarak da fena olmayan bir kullanıcı deneyimi sunuyor. pipx’i varsayılan kurulum yöntemi olarak önerdiğinizde insanların kurulumu başarabileceğini bekleyebilirsiniz. Benim programımın binary bağımlılıkları var ama GUI’si yok
  • Şahsen CustomTKinter’ı daha çok beğeniyorum. Çok daha zarif, Material tema benzeri bir görünüme sahip ve Windows/Linux/macOS’ta sistem ayarlarına göre açık/koyu tema desteği sunuyor

  • Hızlı uygulama geliştirme alanında VB6’nın bıraktığı boşluğu hâlâ hiçbir şeyin doğru dürüst dolduramamış olması şaşırtıcı. Dilin kendisi harika değildi ama VB6’nın güçlü yanı sürükle-bırak GUI builder’ıydı

  • Oldukça iyi hazırlanmış bir CLI arayüzü olan bir araca GUI giydirip, masaüstü Linux kullanmayan kişilerin de kullanabilmesini sağlamayı düşünüyorum. PySimpleGUI ihtiyaçlarıma tam uyabilir gibi görünüyor
    https://github.com/hiAndrewQuinn/finstem
    Aracımda CSV, TSV, JSON bayrakları iyi tanımlanmış durumda. Mevcut, eksiksiz bir CLI aracını değiştirmeden onun üstüne GUI kurma deneyimi olan var mı; ne tür zorluklar beklemeliyim merak ediyorum

    • Satranç motorları iyi bir referans örnek. Karar verme kısmı CLI’dır ve WinBoard[0] ya da Arena[1] gibi GUI’lere bağlanır
      Motor ile GUI, WinBoard veya UCI[2] gibi protokolleri izler ve STDIN/STDOUT üzerinden metin komutları alışverişi yapar. Başlıca zorluk, çoklu iş parçacığında yaşananlarla aynıdır: GUI ile CLI birbirini beklerken kilitlenmeye yol açan deadlock oluşabilir. Bu yüzden her iki tarafın da tepki verebilirliği korumak için giriş/çıkışı “iş mantığından” ayrı iş parçacıklarında işlemesi gerekir. Bir başka yaygın sorun da pipe işlemede işletim sistemine özgü davranışların farklı olmasıdır; buffer flush ya da Linux/Mac/Windows arasındaki API farklarına dikkat etmek gerekir
      [0] http://hgm.nubati.net/
      [1] http://www.playwitharena.de/
      [2] https://gist.github.com/DOBRO/2592c6dad754ba67e6dcaec8c90165...
    • Örneğin HandBrake’e bakabilirsiniz. ffmpeg için şık bir UI’a oldukça yakın
  • Kaba görünmek istemem ama metin çok fazla. Metin koyulabilecek her yerde uzun cümleler uzayıp gidiyor; çoğu tutarlı olsa da ilk bin kelime boyunca ilgili tek bir ekran görüntüsü bile yok
    Bir şeyler ters görünüyor. Sanki genç ve hevesli bir geliştirici ya da insanları kullanmaya ikna etmek için bolca metin koymuş biri gibi hissettiriyor. README’de yazarın kendini tanıttığı bir “about me” bölümü bile var. README’nin herhangi bir yerine inip birkaç paragraf okuduktan sonra az önce okuduklarınızı tekrar anlatmayı denerseniz buna örnek olur

    • Her bölümün net bir başlığı var. İlgilenmediğiniz bir bölümse biraz kaydırmanız yeterli. Kimse sizi “about me” bölümünü okumaya zorlamıyor
      Bazı insanlar “en az kelimeyi okuyup en hızlı şekilde nasıl çalıştırırım” tavrından ziyade, aracın kendisi hakkında okumaktan keyif alır. Başkasının yaptığı bir aracı ücretsiz kullanıyorsunuz; şikâyet etmeyi bırakıp istedikleri şekilde ifade etmelerine izin vermek daha iyi
    • “Genç ve hevesli geliştirici” tahmini yanlış. “About Me” [1] kısmında 70’lerden beri yazılım yazdığı ve kariyerinin büyük bölümünü Silicon Valley’de ürünler geliştirerek geçirdiği yazıyor
      [1] https://github.com/PySimpleGUI/PySimpleGUI#about-me-
    • Sadece göz gezdirdim. Yatırımcı çekmeye çalışan bir ürün MVP’si değil; onu yapan kişinin bizzat dokümantasyonunu yazdığı bir araç
      Kaba olmak istemem ama acaba adım adım özetle ağzınıza kaşıkla verilmediğinde, bir şeyleri okumak zorunda kalma fikrinin kendisinden korkuyor olabilir misiniz diye sormak istiyorum
    • Bence oldukça kaba bir ifade. Özellikle metnin fazla olmasının nedenini yalnızca iki seçeneğe indirmişsiniz ve ikisi de pek iyi duyulmuyor. Üstelik o nedenler doğru gibi de görünmüyor
      Aynı düşünce “görsel bir projeyse ana açıklamada daha fazla ekran görüntüsü olması gerektiğini düşünüyorum” şeklinde de aktarılabilirdi; hakaret içeren tahminleri çıkarmak mümkündü
    • Projeye Simple adının verilmiş olması sorun olabilir. Çünkü okuyucunun zihnine beklenen bir ön kabul yerleştiriyor
      Smart, Open, Trusted, Secure gibi kelimeleri proje adına koyduğunuzda, insanların o adın idealinin gerisinde kaldığını belirtmesi kolaylaşır. Buna karşılık C veya BSD gibi adların bir zıddı ya da çağrışımı olmadığı için “C dili adının hakkını vermiyor” demek zordur