Python - Tkinter Oluşturma Aracı Var Mı? (Sürükle Bırak Methodu)

Merhaba,

C#, visual basic vb gibi dillerde pencere oluşturmaya yarayan araçlar var. Sürükle bırak ve özelliklerini dilediğin gibi değiştir şeklinde.

Python Tkinter modülünde böyle bir araç var mı? Windows da çalıştıracağım.

Dün sizinle konuştuktan sonra ben de bunu düşündüm. Bir kaç araç buldum. Ama c# ayarında bir şey göremedim açıkcası. Hala bakıyorum, belki vardır.

Ama tkinter biraz kısıtlı bir kütüphane çok eskiden denemişler ama, sanırım ışık görememişler tkinterde onun için çok iyi bir şey yok gibi. Yine de bilen biri baksın.

Gözüme çarpan en basiti buydu.

Visual TK, Visual Python Tkinter GUI Creator

Bir de pygubu gibi bir şey gördüm. Ama denemedim.

GitHub - alejandroautalan/pygubu: A simple GUI builder for the python tkinter module

Pygubu hello world program - YouTube

Tabi bu da çok eski. Çalışır mı bilemedim. Üzerinde çalışıp bir yerlere varmaya çalışmak lazım.

2 Beğeni

PyQt5 mi kullanalım? Farklı önerilere açığım. Yeni bir dil öğrenmek için biraz daha vakit lazım. Python için ara yüz olarak hangi modülü kullanalım?

basit işlemler için ideal görünüyor fakat komplike tasarımlar yapacağım için aslında bir araca ihtiyaç duydum.

1 Beğeni

tekrar soruyorum işte becerebilmek ve farklı öneriler adına

Bence qt5 designer ile biraz daha rahat edersiniz gibi. Basit uygulamalarda tkinter iyi, ama görsel niteliklere hakimiyet için qt5 daha iyi gibi duruyor.

2 Beğeni

şuradan indirip kurdum deneyelim bakalım ne sonuç alacağız

Merhaba,

Pyside kullanılabilir. Pyqt lisansı ticari uygulamalar için ücret odemelisiniz, ama pyside’da böyle bir şey yok, ticari uygulamalarda da ücretsiz kullanılabiliyor. bknz.

PySide is developed by Nokia and had its initial release in 2009, in a time when Nokia was the owner of QT. As can be read on the PySide web page(link is external), PySide has been developed and published in response to a lack of a QT wrapper for Python that has a suitable license for FOSS and proprietary software development. Without going too much into the details of the different license models involved, if you want to develop a commercial application, PyQt requires you to pay fees for a commercial license, while the LGPL license of PySide permits application in commercial projects.

Qt designer ile pencere tasarlanıp importlarda sadece PyQt5 kelimesi PySide ile felan değiştirilebilir. Belki PySide 'ın pyuic tarzı bir toolu da vardır ui den py ye dönüştürmek için.

Yanlışım olabilir elbette dediklerimde, ışıklandırılmaya hazırım:)

Hocam tkinter tam bir boomer toolu.(bence)

1 Beğeni

Ben bu iyi şu kötü diyemedim işte. Kişiye göre değişiyor durum. Yeni öğreneler için evet iyi ama ihtiyaçlar arttıkça karşılayamayabiliyor.

Benim için çok farketmiyor, etrafından dolaşır bir şekilde hallederim ama herkes bu kadar uğraşmak istemeyebiliyor.

Pyside da mantlıkl lisans endişesi yaşamak istemeyenlere.

Ben windows üzerinde, winapi kullanmayı, linux üzerinde terminalde çalışmayı seviyorum. Qt bu nedenle yadırgamadığım bir kütüphane ama işte herkesin ihtiyaçları farklı.

1 Beğeni

Qt Designer’ı denedikten sonra kullanıcı deneyiminizi paylaşırsanız sevinirim. Yeni deneyen birinin bakış açısı benim için önemli.

Bu konu vesilesiyle bir iki hususa değinmek istiyorum, müsadenizle. Buradan aşağıda kalan yazı şahsınıza özel değil, genel konular olacaktır.

Gui ( Grafiksel Kullanıcı Arayüzü) konusunda nacizane kendi deneyimlerim ve tavsiyelerimi karalayacağım buraya.

Öncelikle çapraz platform/ birden çok işletim sisteminde (cross platform) çalışan uygulamalar yazmak yerine, platforma özel kod yazmak daha fazla işletim sistemi özelliğinden faydalanmak için faydalı.

Her ne kadar ufak tefek düzeltmelerle hem linux dağıtımları hem de windows üzerinde çalışabilen uygylamalar cazip gelse de bazan ufak nüanslar nedeniyle her iki platformda da aynı şekilde programlar üretmeye çalışmak bazan yorucu olabilir. Mac OS konusuna ve Anroid e değinmedim dahi.

Öncelikle, ileride yazacaklarımın sebebine ışık tutması açısından bir iki konuya açıklık getirmeye çalışayım. Biliyorum, bazıları bunları biliyor ne gerek var diyebilir ama bakış açısı farkını göstermesi açısından değinmek zorundayım.

İşletim sistemlerinin, çekirdekleri vardır, bu çekirdekler temel işlemleri yürütmek ve gelen isteklere cevap vermek gibi temel işlev ve komutları içerir. Linux kernel’i yada windows için kernel32.dll anlatmayı düşünmüyorum.

Peki bu çekirdeklerle nasıl haberleşiriz? Bir arayüz ile ilk katman arayüz Shell dir. Yani çekirdekle etkileşime bir kullanıcının girebilmesi için shell (kabuk) adında ikincil bir katmana ihtiyaç vardır.

Bu sayede biz, terminal/console yada komut satırı ne derseniz, bir katman ile iletişim kurarız. Komut göndermek ve sonuçları almak bu kabuk sayesinde olur.

Gelişen işletim sistemleri, komutların girilmesinin zahmetli olması nedeniyle, bunu grafiksel bir arayüz ile halletmenin daha kolay olacağı sonucuna ulaşmı durumda. Sesli komutlar vs gibi konular ile diğer synaptic konularına girmiyorum.

Yani window yada linux dağıtılmarı ne kullanırsanız kullanın artık çekirdek seviyesi komutlara erişim işini grafik arayüz üzerinden halletmek istiyoruz bu durumda şöyle bir yol ayrımı ile kaşılaşıyoruz.

Windows bakış açısı ve Linux bakış açısı.

Windows, common controls ve user controls adında bazı dll dosyaları ile bir arayüz standardı sunuyor. ( Kapalı kod, Bill’in işletim sistemini övdüğümü düşünmeyin.)

Arayüz mekaniğinin tamamını anlatmayı düşünmüyorum, ama olay güdümlü ( event driven) bir yapı ile her yaptığınız işletim sistemi talebi bir olay olarak algılanır ve sonucunda bir msg kodu üretilir ve bu kod bir yerlerde işlenir ve kernel e gönderilir.

Burada gdi ( grafiksel sürücü arayüzü) adındaki bir sistem bileşeni size grafiksel destek sağlar.

Windows’ta bir buton gördüğünüzde yadırgamazsınız, tıklanması gereken bir düğme gibi hayal edersiniz, halbuki windows’un yaptığı, basılı va basılmamış iki resmi sizin mouse event’inize göre yer değiştirmek ve bununla ilgili bir buton basıldı olayı üretmektir.

Tabi bu resmin bulunduğu konum bilgisi üzerinde olup olunmadığı gibi diğer olayları da takip eder.

Tipik bir windows uygulamasıda, buton, label, text, combobox, radiobutton gibi arayüz bileşenleri gördüğünüzde, sezgisel yada eğitilmiş bilgiler nedeniyel nasıl çalıştığını bilirsiniz. Bahsettiğim standardizasyon meselesi alsında budur.

Kullandığınız arayüz bileşeninin herkesçe bilinen kabul gören davranışları nedeniyle, kullanıcı hiç bilmediği bir uygulamayı bile anında, anlar hale gelebilir. Zor kullanılan kullanıcı uygulamalarına bakın kesinlikle standart dışı arayüz bileşenleri içeriyordur.

Gelelim linux tarafında.

Linux çekirdeği de benzer bir durumdadır. Üzerinde kabul, ve onun üzerinde bir pencere yöneticisi içerir, bu pencere yöneticisinin arasında bize yine gtk, qt gibi kütüphaneler arayüz desteğini sağlarlarlar.

Yine bunlar bize buton, check box radio box vs gibi bileşen/widget desteği sağlar. Yine sezgisel bir linux kullanıcıs bunların nasıl kullanıldığını anlar ve çabukça kullanır hale gelir, olaylar konusunda ise windowsta çift tıkla açtığınız bir uygulamaları tek tıkla açabilirsiniz (bu da ayarlanabiliyor oda ayrı bir konu.).

Bu kadar konuyu neden anlattım (Emin olun detayına girmedim çok yer kaplamasın diye) ve hatta linux pencere yöneticilerine girip, gnome mu Kde mi kavgası çıkarmamaya da özen gösterdim) sebebi şu;

Her ne kadar benzer yönleri olsa da işletim sistemleri farklı, yetenekleri farklı, hitap ettikleri kullanıcılar farklı. Bu nedenle çapraz platform programlar ne windowsçulara, ne linuxçulara tam hitap etmez.

Bu nedenle baştan belirttiğim gibi platforma özel kodlar yazmak gerekir.

Windows’un tüm yeteneklerini destekleyen bir program yazmak varken neden her iki sisteme hitap etmeye çalışayım? Tabi ki koşullu derlemelerle her iki sistemde çalışan programlar da çalışır ama hiç bir zaman, ilgili işletim sisteminin doğal görünümünde olmayacağı gibi, kullanıcıya da işletim sistemine uygun kullanıcı deneyimi yaşatamayız.

Sayısız açık kaynak linux için yazılıp, windows için derlenmiş program kullandım. Ben bu işletim sistemine ait değilim diye bağırıyor kod.

Bu nedenle basitçe platforma özel ayrı kodlama ve uygulama tasarımı tercihimdir. ( Katılmayabilirsiniz saygı duyarım.)

Bu nedenle ben olsam eğer windows için kod yazıyorsam, windows araçlarını kullanırım, microsoft araçlarını kullanırım, microsoft fobisi olanlar da Ambercadero gibi diğer üçüncü parti şirketlerin araçlarına bakabilir.

Linux için uygulama yazacaksam, ki linux gibi güçlü bir terminali olan, güçlü terminal araçları bulunan bir işletim sistemine gui hakaret gibi geliyor (bu benim görüşüm) yinede gui gerekiyorsa, gtk yada qt arasında kalsam;

Her ikisini de kullanmakta sakınca görmemekle beraber, bir çok kullanıcının qt tercih edeceğini söyleyebilirim.

Daha x ve x11 konusuna girmedim dahi ve girmek de istemiyorum. Bir de bu grafik arayüzün alt katmanındaki konulara girersek boğuluruz.

Peki uzunca yazadıklarını bir kaç cümleyle özetle derseniz:

İsviçre çakısı gibi araçlar kullanmak doğru yaklaşım değildir. Evet içinde bir testeresi var ama büyük bir ağacı kesemez, evet bir türbişonu var ama her zaman şişe mantarı açmazsınız, evet bir bıçağı var ama büyük bir hayvanı kesemezsiniz, evet herşey yanınızda gibi hissettirir ama asla her şeyi tam yapamaz. Yine evet bazan hayat kurtarabilir ama programlama dünyasında hayat kurtaran vahşi yaşamda yalnız kalma gibi bir durum nadir yaşanır.

Bu nedenle işletim sistemine özel, işletim sisteminin olağan araç ve arayüz bileşenlerini kullanmayı tavsiye ederim.

Bu şekilde, hem programlarınız daha profesyonel görünür, hem bu profesyonel görünümü sağlamak için fazla çaba sarfetmeniz gerekmez, hem de tüm enerjinizi arayüz tasarımına harcamak yerine asıl kodunuza odaklayabilirsiniz. Bu arada kullanıcılarda programlarınızı kullanırken zorluk yaşamaz.

Basit programlar için sorun değil ama, profesyonel yazılımlar için eğitim vermek kullanıcı eğitmek de ekstra bir maliyettir. Ne kadar basit arayüz tasarlarsanız, kullanıcıları eğitmek için o kadar az zaman, emek ve para harcamış olursunuz.

Kolay gelsin.

3 Beğeni

Öncelikle merhaba PyQt5 kullanabiklirsin qt designer birlikte gui tasarlayabilirsin ben şuan bu iş üzerinde uğraşıyorum sizede kesinlikle tavsiye ederim.