Asla Tavsiye Edilmez: GTK (+PyGTK)..!
25 Temmuz 2007, Saat: 23:50 @ Tags: Linux, Özgür Yazılım, Programlama, Projeler, PyGTK, Python
Bir süredir nasıl da bir heyecanla uğraşıyordum projeyle… Amacım Rapidshare hesabına sahip kullanıcıların rahatlıkla dosya indirebilecekleri bir uygulama yazmaktı. Ana pencereyi Glade ile yaptım gayet güzel ve sade bir şekilde… Ufak ufak olayları yazmaya başladım. Daha sonra kodu Eclipse üzerine alarak biraz daha projemsi bir hale getirdim. Sonra sorunlar başladı….
Örneğin bir tuşa bastınız. Basılan tuşun olayını Glade ile ayarlayıp daha sonra bunu Python kodu içerisinden fonksiyonlara bağlayarak işinizi görebiliyorsunuz. Buraya kadar sorun yok… Help->About kısmına bir AboutDialog koymaya ve burada klasik anlamda bir Hakkında bilgisi vermeye çalıştım. Basitçe bunu da Glade içerisinde yapayım dedim. AboutDialog’u bir sınıf içerisine alarak, üst sınıfı genişleterek bir şeyler yapmaya başladım. Bu AboutDialog denen diyaloğun alt tarafında ön tanımlı olarak bir Kapatma tuşu geliyor. Ancak bu zımbırtıya bastığınızda pencere kapanmıyor.. Bu tuşlar, basıldığında pencerede bir tepki (response) yaratıyormuş. Bu tepkiyi bir fonksiyona ileterek pencereyi kapatmam gerektiğini öğrendim. Bunu öğrenebilmek için PyGTK’nın referans kitabına kaç saat, kaç gün baktığımı söylesem gülenler olacaktır. Ya tek istediğim gtk.RESPONSE_CLOSE tepkisinin oluşturulması durumunda pencerenin bir şekilde kapatılmasıydı… Hadi bunu da zar zor becerdim. Sinyal olarak bana -6 döndürüyor ve ben bunu gtk.RESPONSE_CLOSE ile karşılaştıramıyorum. Bir sürü IRC kanalına girdim, sorular sordum; cevap yok… Hele ki Türk’ler arasında bunu bilen bir Allah’ın kulu çıkmıyor, kafayı yememek elde değil..!
Bir başka şey…. Google Code Search’te falan bakıyoruz örnek kodlara…. Adam,
dialog.run()
dialog.destroy()
demiş altalta…. Yahu .destroy() pencereyi kapatıp, belleklerden silmez mi ?! O zaman amaç ne ? Hayır silmiyor….! Silmekle kalmıyor, bizim çalışmayan buton, bir anda aslan kesilip alıyor tepkiyi.. Basınca kapanıyor lanet olası pencere..
Aynı şekilde bir diyaloğu çalıştırmak için, .show_all(), .show(), .run(), .present() gibi metodlarımız var.. Zengin bir olay yani….. Okununca hangisinin ne işe yaradığı az çok anlaşılsa da, kullanılacak yerlerin net bir şekilde akılda kalması oldukça zor…..
Uzun lafın kısası… Bu gece PyGTK’dan da, GTK’dan da nefret ettim….. Bana QT diyecek olanlara da selam olsun… Eminim, daha farklı değildir..









