6 Nisan 2020 Pazartesi

Design2Py Converter v1.5

Design2Py Converter v1.5



PyQt5 ile arayüz geliştirirken tasarım yapmak için aşağıdaki şemada görüldüğü gibi 2 yöntem mevcuttur:

1) Kod ile tasarım yapmak,
2) Qt designer ile tasarım yapmak


Genellikle zaman kazandırdığı ve kolay olduğu için Qt Designer ile tasarım yapmayı tercih ediyorum. Qt Designer ile tasarım yapıldığında bu tasarımın Python ile kullanılması gerekmektedir. Bu aşamada da 2 farklı yöntem mevcuttur:

1) Pyuic5 ile hazırlanan tasarım Python kodlarına dönüştürülür.
2) loadUi fonksiyonu ile tasarım Python tarafından çağrılır.

loadUi fonksiyonu kullanıldığında arayüz elemanları proje geliştirirken okunamadığı için kod tamamlama özelliği çalışmıyor. Bu özellik çalışmadığında hem arayüz elemanları nesne adlarıyla çağrılırken hem de arayüz elemanlarının sahip olduğu özellikleri (fonksiyonları) kullanırken zorlanıyorsunuz. Bu sebeple hazırlamış olduğum tasarımı Pyuic5 ile Python kodlarına dönüştürmeyi tercih ediyorum. Pyuic5 dönüştürücüsünün nasıl kullanıldığını Ücretsiz PyQt5 Dersleri eğitim serisinde bulabilirsiniz. Biraz zahmetli, hataya açık ve arayüz geliştirirken vakit alan bir işlem olduğu için bu işlemleri daha kolay yapabilmek adına Design2Py Converter programını geliştirdim. YouTube kanalımda PyQt5 derslerini anlatırken sıklıkla kullandım ve mail aracılığı ile isteyenlere ücretsiz olarak verdim. (Bu yazının yazıldığı tarih itibariyle benden 109 kişi programı istedi. Eğer onlarda verdiğim linki başkalarıyla paylaştıysa gerçek kullanıcı sayısı daha fazla olabilir.) Design2Py Converter v1.3 hakkında detaylı bilgilere buradan ulaşabilirsiniz.

Design2Py Converter v1.3'te Karşılaşılan Hatalar

Programı farklı işletim sistemlerinde çok sayıda kişi kullandı ve geri bildirim olarak aşağıdaki hataları bildirdiler:

1) Farklı PyQt5 versiyonlarında Pyuic5'in farklı yapıda olmasından dolayı bir versiyonda başarılı bir şekilde dönüşüm yaparken (PyQt 5.6 - pyuic5.bat) bir başka versiyonda (PyQt 5.11.3 - pyuic5.exe) dönüşüm yapmaması.
2) Pyuic5 veya Pyrcc5 in bulunduğu klasör yolunu bulmak için ortam değişkenlerine erişmeye çalışıyordum ve bu sebeple programın kapanması.

Yeni özelliklerin olduğu ve bahsedilen hataların olmadığı v1.5 hazırlandı.

Design2Py Converter v1.5'te Yenilikler

1. Dil Desteği

Design2Py Converter v1.5 Türkçe ve İngilizce olmak üzere 2 farklı dilde çalışabilmektedir. Dil tercihi menüden değiştirilebilmektedir.



2. Ayarları Kaydetme-Yükleme Özelliği

Kullanım kolaylığı için getirilen bir özelliktir. Programı kapatmadan önce mevcut ayarlarını (dil tercihi, seçilen sekme (sayfa) ve dosya yolları) kayıt ederseniz ve programı daha sonra açtığınızda kaldığınız yerden devam edebilmek için kaydetmiş olduğunuz ayarları yükleyebilirsiniz. Böylelikle her seferinde dosya yollarını ayarlamak zorunda kalmazsınız.



Ayrıca Programın bulunduğu klasör içerisinde formata uygun (program tarafından oluşturulmuş) init.json adında ayarlar dosyası varsa, Design2Py Converter bu dosyada yer alan ayarlara göre açılacaktır. Bu özellik sayesinde kaydetmiş olduğunuz ayarları tekrar yüklemenize ihtiyaç duymayacaksınız.

3. Yardım Menüsünde Yapılan Değişiklikler

Yardım menüsünde 2 ufak değişiklik yapılmıştır. Daha önce YouTube kanalıma yönlendiren link zaten PyQt5 Dersleri ile YouTube kanalına gidilebildiği için Blog sayfama yönlendirilmiştir ve adı Yapay Zeka Labs Blog olarak değiştirilmiştir. İkinci olarak Sürüm Notları seçeneği ile program ve versiyon hakkında detaylı bilgilere ulaşılması adına bu sayfaya yönlendirme sağlanmıştır.



4. Yapay Zeka Labs Sekmesi

Giriş sekmesinde bulunan Yapay Zeka Labs logosuna tıkladığınızda Yapay Zeka Labs YouTube kanalım açılacaktır.


5. ui-2-py Sekmesi

Programın farklı PyQt5 versiyonlarında Pyuic5'in farklı yapıda olmasından dolayı bir versiyonda başarılı bir şekilde dönüşüm yaparken (PyQt 5.6 - pyuic5.bat) bir başka versiyonda (PyQt 5.11.3 - pyuic5.exe) dönüşüm yapmaması en büyük problemdi ve bu problemden kurtulmak için Pyuic5 bileşeninin kullanımını iptal ettim. Dönüşüm işleri programın içinde gerçekleşmektedir. Bu sekmede kullanıcının yapması gereken tek şey dönüştürmek istediği tasarımı Tasarımı (.ui) Seç butonuna basarak seçmesidir. Önceki versiyonda (v1.3) Python kodlarına dönüştürülen tasarım mevcut tasarım ile aynı klasöre ve tasarım adının sonuna _python eklenerek kaydediliyordu. Kullanıcıya kayıt isminde ve klasör yolunda değişiklik yapma hakkı tanıdım. İsterse Kayıt Yoluna Gözat tuşuna basarak değişiklik yapabilir. Son olarak dönüşüm işlemini gerçekleştirmek için kullanıcının Dönüştür ui -> py tuşuna basması gerekiyor.

Buna ek olarak Pyuic5'in hangi klasörde olduğunu bulmak için "Ortam Değişkenlerine" erişmeye çalışmamdan kaynaklanan sorunlardan da kurtulmuş oldum.



6. qrc-2-py Sekmesi

"Ortam Değişkenlerine" erişerek Pyuic5 ve Pyrcc5 in bulunduğu klasör yolunu kullanıcıyı yormadan bulmam güzel bir özellikti ancak farklı kullanıcılarda bahsettiğim gibi sorunlara yol açmıştı. Arayüz açılırken kayıtlı ayarlarla açılması ve mevcut ayarların kayıt edilmesi özelliklerini getirerek yine kullanıcıyı yormadan ihtiyaç duyulan klasör yolları otomatik bulunacaktır. Kullanıcının klasör yollarını değiştirmediği sürece sadece bir defa bilgisayarında Pyrcc5'in bulunduğu klasör yolunu bulması gerekecektir. Pyrcc5'e Gözat tuşuna basılarak Pyrcc5 seçildikten sonra Dosyayı (.qrc) Seç tuşuna basılarak Python kodlarına dönüştürülmek istenen Qt Kaynak Dosyası seçilmelidir. Son olarak Python kodlarını elde etmek için Dönüştür qrc->py tuşuna basılmalıdır.



Burada Python kodlarına dönüştürülen Qt kaynak dosyası mevcut Qt kaynak dosyası ile aynı klasöre aynı ismin sonuna _rc eklenerek kaydedilmektedir.

Design2Py Converter v1.5 İndirme Bağlantıları

İşletim Sistemi Design2Py Converter Yayınlanma Tarihi
Windows 7-10 v1.5.0 08.04.2020 - 19:34
Ubuntu 16.04 v1.5.0 08.04.2020 - 19:44
Ubuntu 18.04 v1.5.0 09.04.2020 - 00:50
MacOS High Sierra 10.13 v1.5.0 19.05.2020 - 13:40
Raspbian - -
Ubuntu Mate - -

Test Edilen PyQt5 Versiyonları

Aşağıdaki tabloda Design2Py Converter programının test edildiği ve herhangi bir sorunla karşılaşılmayan PyQt5 versiyonları gösterilmektedir. Benim tek başıma her işletim sistemi için ve her PyQt5 versiyonu için test etmek için vaktim olmadığından sizler de burada yer almayan PyQt5 versiyonları kullanıyorsanız, programın o versiyonlar için de durumunu yorum olarak bildirirseniz tabloyu o bilgiler ışığında güncelleyeceğim.

İşletim Sistemi Test Edilen PyQt5 Versiyonları
Windows 7-10 5.6.0 - 5.11.3 - 5.13.2
Ubuntu 16.04 5.11.3
Ubuntu 18.04 5.13.1
MacOS High Sierra 10.13 5.11.3
Raspbian -
Ubuntu Mate -


1 Nisan 2020 Çarşamba

Qt Android Kurulumu

Qt Android Kurulumu


Qt, birden çok platformu destekleyen (cross-platform) masaüstü, gömülü sistem ve mobil ortamlar için grafiksel kullanıcı arayüzü geliştirmemizi sağlayan bir araçtır.
Aslında Qt'yi sadece arayüz hazırlama programı olarak nitelendirmek Qt'ye yapılmış büyük haksızlıktır. Qt içerisinde çok gelişmiş C++ modülleri, sınıfları vardır. Qt ile kullanıcı arayüzü geliştirmek için C++ programlama dili kullanılmaktadır. Qt'nin bana göre en önemli avantajı birçok işletim sisteminde (Windows, Linux, Mac) kullanılabiliyor olmasıdır (cross-platform özelliği).
Qt'nin ticari ve açık kaynak (open source) olmak üzere 2 çeşit lisansı mevcuttur. Hobi amaçlı kullanım ücretsizdir.
Algoritma geliştirirken veya test ederken bir arayüz hazırlayarak onun üzerinde çalışmanın işleri kolaylaştırdığını, zaman kazandırdığını ve sonuçları daha iyi yorumlama fırsatı sunduğunu düşünüyorum. Ben genelde bu sebeple Qt'yi kullanıyorum. Ayrıca ağ bağlantısı olan cihazların uzaktan kullanılması için Qt ile Android işletim sisteminde çalışan mobil uygulamalar geliştiriyorum.
Bu kurulum ile amacımız masaüstü için daha önceden hazırladığımız programların android işletim sistemine sahip cep telefonunda çalıştırmaktır. Tamamiyle Android uygulama geliştirmek değildir. Zaten Qt'yi biliyorsanız ve mobil uygulama geliştirme ihtiyacınız varsa sıfırdan başka bir programlama dili veya program öğrenmeden mevcut bilgimizi kullanarak geliştirdiğimiz masaüstü uygulamaları Android işletim sisteminde çalıştırılabilir hale getirmektir.
Bu yazımızda Android işletim sisteminde çalışacak mobil uygulamalar için Qt kurulumunu gerçekleştireceğiz. Kurulumu yaptıktan sonra hazırlamış olduğum Ücretsiz Qt Derslerini izleyerek Qt ile ihtiyacınız olan mobil uygulamaları geliştirebilirsiniz.


1. Qt'yi Tanıyalım

Qt ile birlikte sıklıkla kullanılan Qt Creator ve Qt Designer araçları bu bölümde kısaca tanıtılacaktır.

1.1. Qt Creator Nedir ?

Qt Creator, Qt ile daha rahat ve daha kolay arayüz geliştirmenizi sağlayan Bütünleşik Geliştirme Ortamı (Integrated Development Environment, ide) olarak adlandırılır. Qt Creator ile içerisinde barındırdığı araçlar sayesinde proje oluşturmak ve burada saymakla bitiremeyeceğim bir çok ayarı yapmanız çok kolaydır. Qt Creator, içerisinde aynı zamanda Qt Designer'ı da içermektedir. Qt Designer ise sürükle-bırak tekniği ile arayüz tasarımı yapmanızı sağlayan tasarım aracıdır. Qt'de arayüz tasarımı için 2 seçenek vardır. Qt Designer aracında sürükle-bırak kolaylığı ile tasarım yapılabildiği gibi kod yazarak da tasarım yapılabilir.


Zaman içerisinde farklı logolar kullanılsa da genelde Qt Creator için aşağıdaki logo kullanılmaktadır.


1.2. Qt Designer Nedir ?

Qt Designer, tek başına da kurulup kullanılabildiği gibi Qt Creator içerisinde de kullanılabilmektedir. Eğer Qt Creator kullanıyorsanız Qt Creator içerisindeki Qt Designer işinizi görecektir. Ayrıca Qt Designer kurmanıza gerek yok. Genel olarak aşağıdaki ikon Qt Designer ikonu olarak kullanılmaktadır.


Qt Designer'da arayüz elemanları widget box olarak adlandırılan ekranın sol bölümünde yer almaktadır. Buradan seçilen arayüz elemanı aşağıda gösterildiği gibi sürükle-bırak tekniği ile arayüz tasarımına eklenmektedir. Daha detaylı bilgilere Ücretsiz Qt Derslerini izleyerek ulaşabilirsiniz.


2. Qt Android Kurulumu

Qt Android kurulumunu aşağıdaki adımları takip ederek gerçekleştireceğiz.

2.1. Mevcut Qt Kurulumunun Kontrol Edilmesi

Bu adımda eğer daha önceden bilgisayarınıza Qt kurulumu gerçekleştirdiyseniz ( Windows için Qt Kurulumu , Ubuntu (Linux) için Qt Kurulumu ), bu kurulumun Android için mobil uygulama geliştirmeye yeterli olup olmadığı kontrol edilecektir.
Bunun için öncelikle Qt Creator açılır ve üst bölümde yer alan Tools sekmesinde Options seçeneğine tıklanır.


Açılan pencerede sol bölümde yer alan Build & Run seçilir. Bu bölümde yer alan Kits ve Qt Versions sekmelerinde aşağıdaki ekran görüntüsünde yer alan Android ile alakalı bölümler yoksa mevcut kurulumunuz ile Android işletim sistemi için mobil uygulama geliştiremezsiniz.



Android kurulumu olmayan MinGW32 kurulumu olan Qt kurulumu için Kits ve Qt Versions sekmelerinde aşağıdaki ekran görüntüsüne benzer bir sonuç elde edersiniz.



2.2. Qt Android Kurulumu

Qt Android kurulumu için elimizde aşağıdaki şemada gösterildiği gibi 2 seçenek mevcuttur. Eğer Android konfigürasyonu olmayan mevcut Qt kurulumumuz varsa bu kuruluma sonradan MaintenanceTool ile Android konfigurasyonu ekleyebiliriz. 2. seçenek ise sıfırdan içerisinde Android konfigürasyonu barındıracak şekilde Qt kurulumunu gerçekleştirmektir.


Bu 2 farklı kurulum yöntemi detaylı olarak yazının sonunda yer alan videoda açıklanmıştır ve kurulumlar adım adım gerçekleştirilmiştir. Her 2 yöntem için ortak olan Qt kurulumu sırasında yer alan Android konfigürasyon ekleme adımı aşağıdaki ekran görüntüsünde gösterilmiştir. Bu adıma ulaşmak için önceki yazılarımı inceleyebilirsiniz ( Windows için Qt Kurulumu , Ubuntu (Linux) için Qt Kurulumu ).


2.3. JDK - NDK - SDK Kurulumları

Bir önceki adımda yapmış olduğumuz işlem ile Qt'ye dedik ki "Ben Android ile mobil uygulama geliştirmek istiyorum kendini buna göre ayarla" ve Qt kendisini Android ile çalışacak şekilde ayarladı. Şimdi Qt bize diyor ki "Ben kendimi Android ile çalışacak şekilde ayarladım şimdi benim ihtiyaç duyduğum dış kaynaklı araçları kurman gerekiyor".
Biz de Qt'nin sözlerini dikkate alarak onun ihtiyaç duyduğu dış kaynaklı araçları kurma işlemine geçiyoruz. Bunun için öncelikle daha önce yaptığımız gibi Qt Creator açılır ve üst bölümde yer alan Tools sekmesinde Options seçeneğine tıklanır.


Açılan pencerede sol bölümde yer alan Devices seçilir ve bu seçimle birlikte güncellenen pencerede üst bölümde yer alan Android sekmesi seçilir. Açılan ekran hem Qt nin ihtiyaç duyduğu araçları JDK (Java Development Kit), NDK (Native Development Kit), SDK (Software Development Kit) hem de bu araçları yüklemeniz için ihtiyaç duyduğunuz kaynaklara yönlendirmeler içermektedir.


Bu araçların yüklenme işlemi detaylı olduğu ve yazı ile anlatmak zahmetli olduğu için burada anlatılmayacaktır. Yazının sonunda yer alan videoda detaylar ve kurulumlar mevcuttur.
Qt Android kurulumunda en zahmetli olan şey burada yer alan paketlerin ve Qt versiyonunun birbirleriyle uyumlu olarak çalışan versiyonlarını denk getirmektir.
Aşağıdaki tabloda birbirleriyle uyumlu çalışan paket versiyonları gösterilmektedir.

Qt Creator 4.6.2
Qt 5.11.1 veya 5.12.0
JDK (Java Development Kit) 8u241
NDK (Native Development Kit) r10e
SDK (Software Development Kit) 26.1.1


2.4. Qt ile Mobil Uygulama Geliştirme

Qt Android kurulumunu ve birbiri ile uyumlu olarak çalışan ihtiyaç duyulan paket kurulumlarını başarılı bir şekilde yaptıktan sonra Qt ile mobil uygulama geliştirme aşamasına geçebiliriz. Qt ile aşağıdaki şemadan da görüleceği gibi Qt Widgets ve Qt Quick olmak üzere 2 farklı yapıda uygulama geliştirebilmektedir.


Qt Quick yapısı, Qt içerisine sonradan dahil olan ve daha çok mobil (cep telefonu, tablet) uygulama geliştirmek için kullanılan ve içerisinde Javascript sözdizimine (syntax) benzeyen QML (Qt Modeling Language) dili kullanılan yapıdır. Qt Widgets, Qt içerisinde Qt Quick yapısından önce var olan ve daha çok Masaüstü uygulama geliştirmek için kullanılan C++ programlama dilini kullanan yapıdır. Qt Widgets daha çok masaüstü uygulamalar için kullanılsa da Qt Widgets ile geliştirmiş olduğunuz uygulamayı mobil platformlarda herhangi bir sıkıntı ile karşılaşmadan rahatça kullanabilirsiniz.