Sayfalar

Pazartesi, Haziran 27, 2016

Python ile GUI - pySide -


Bu ara python ile uğraştığımdan bahsetmiştim. Python devasa kütüphane desteğine rağmen, GUI konusunda pek de gelişkin araçlara sahip değil malesef. Dağıtımlarda standart gelen Tkinter ne yazıkki pek güzel değil. Aktif, güncel  bir GUI aracı yok malesef. Kod yazarak GUI oluşturmakda eziyet. Epey bir araştrıma yapdıktan sonra bulabilidiğim en rahat çözümden bahsetmek istiyorum. PySide

PySide Qt bazlı bir  kütüphane. pyQt de öyle bir çözüm, hatta daha da yaygın. Ama malesef arkasında ticari bir firma var. Anladığım kadarıylada ticari kullanım için lisans satın almanız gerekiyor. Pyside ın hali hazırdaki versiyonu 1.2.4 ve Qt 4.8 bazlı. Lisansı ticari kısıtlama içermiyor LGPL.  Ek olarak Qt. 5.x bazlı bir dağıtım -PySide2- üzerinde çalışmalar devam ediyor hatta Qt nin desteğide var bakınız.  
https://wiki.qt.io/PySide2
Peki nasıl kullanacağız ?

* Öncelikle PySide paketini kurmamız gerekiyor windows için kolay bir kurulum var.

pip install -U PySide
 
* GUI oluşturmak için QtDesigner ı kullanacağız. Pythonun kurduğunuz dizinin altındaki dizine geçin. Ben Anaconda dağıtımını kullandığım için

'C:\Anaconda2\Lib\site-packages\PySide'
bu dizin içinde designer.exe  adı altında Qt Designer ' ulaşıyorsunuz. Bu programı çalıştırın


Dialoglu bir seçeneği kullanın.

Bundan sonrasında sol tarafta GUI araçlarında sürükle bırak tarzında  GUI dizaynımıızı yapıyoruz.



Biz bir tek giriş nesnesi ve bir liste kutusu ortayada bir düğme koyduk girişi yapılan texti listeye ekleyeceğiz. Dizayı işimiz bitince dizaynımızı
'PySide-Deneme.ui' 
olark kaydediyoruz. komut satırından
pyside-uic PySide-Deneme.ui -o PySide-Deneme.py

yazarak dizaynımızı python koduna çeviriyoruz.



kodda Ui_Dialog diye bir sınıf tanımlanmış ama yeterli değil, ilaveler yapmamız gerekiyor.
Önce başına
import sys

sonra sonuna
app = QtGui.QApplication(sys.argv)
form = Ui_Dialog()
Dialog = QtGui.QDialog()
form.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())

satırlarını ekliyoruz. Artık uygulamamız çalışır fakat sadece  dizay ettiğimizi GUI yi görüyoruz. Listeye ekle düğmesinin çalışması için.  Önce ekeleme işlemi için  Ui_Dialog sınıfına bir fonksiyon ekleyelim.
def Ekle(self):
   self.listWidget.addItem(self.lineEdit.text())
 QLineEdit nesnesindeki text i QListWidget nesnesine ekliyoruz basitçe

Ekle Düğmesine basıldığında bu fonksiyonun çağrılması için ise
self.pushButton.clicked.connect(self.Ekle)
satırını Ui_Dialog Sınıfının setupUi fonksiyonun sonuna ekliyoruz.


ve hepsi bu kadar mutlu son....

Kodu incelemek isterseniz
github.com/birolkuyumcu/PySide-Deneme
burdan bakabilirsiniz.