PyQt ile görsel programlamaya kaldığımız yerden devam ediyoruz. Bir önceki dersimizde en temel haliyle bir widget oluşturup çalıştırdık. Bir pencerenin sahip olması gereken özellikleriyle açılmıştı. Bu dersimizde pencere çeşitleri, başlık ayarlama, boyut ayarlama gibi konulara değineceğiz.
İlerleyen derslerimizde ise Qt Designer aracını tanıyabiliriz ama şimdilik onun için erken. Tabi önceki derste yazdığımız temel düzeydeki pencere kodunu tek tek açıklayalım. Aklımızda bir fikir oluşması için basitten karmaşığa doğru ilerleyeceğiz.
from PyQt4.QtGui import *import sysuygulama = QApplication(sys.argv)pencere = QWidget()pencere.show()uygulama.exec_()
1- Gerekli kütüphaneleri ve PyQt’nin QtGui sınıfını çağırıyoruz.
2- sys modülü ise QApplication nesnesine parametre olarak veriliyor. Şimdilik böyle bilmeniz yeterli. Programlarımızın doğru bir şekilde çalışmasını istiyorsanız import edin 🙂 Designer dan çevireceğimiz kodlardada aynı kullanımı göreceksiniz.
3- PyQt uygulamamızı oluşturuyoruz. Programımızın ana işleyişini gerçekleştirecek kısımdır.
4- Penceremizi QWidget tipinde oluşturuyoruz.
5- Penceremizin gözükmesi için show metodunu kullandık.
6- Eğer bu satırı eklemezsek programımız hızlıca çalışıp kapanacaktır. Bu satır sayesinde kullanıcı işlemi beklenecek.
Not:
from PyQt4.QtGui import *
Şeklinde kullandığımıza dikkat edin. Başka kaynaklarda farklı şekilde kullanımlar olabilir.
Diğer bir yol:
from PyQt4 import QtGui,QtCore
QtDesigner dan çevirdiğimiz python kodlarındada bu şekilde geliyor. Eğer bu şekilde yazarsak QtGui ve QtCore modüllerinin alt sınıflarını kullanırken bunları her defasında yazmamız gerekir. Örnek:
from PyQt4 import QtGuiimport sysuygulama = QtGui.QApplication(sys.argv)pencere = QtGui.QMainWindow()pencere.show()uygulama.exec_()
Pencere Tipleri
1- QWidget
from PyQt4.QtGui import *import sysuygulama = QApplication(sys.argv)pencere = QWidget()pencere.show()uygulama.exec_()
Qwidget en genel pencere türüdür. Bir önceki kullandığımız kodda bu pencereyi kullandık.
Özellikleri:
Simge durumuna küçültme
Ekranı kaplama
Kapatma
En-boy ayarı yapma
2- QDialog
from PyQt4.QtGui import *import sysuygulama = QApplication(sys.argv)pencere = QDialog()pencere.show()uygulama.exec_()
QWidget’a çok benzer. Simge durumuna küçültme ve ekranı kaplama yerine yardım (?) butonu vardır.
3- QMainWindow
from PyQt4.QtGui import *import sysuygulama = QApplication(sys.argv)pencere = QMainWindow()pencere.show()uygulama.exec_()
MainWindow resimde gördüğünüz gibi bölgelere sahiptir.
Menu bar
Menü çubuğu
Toolbar areas
Araç çubuğu alanları
Dock window areas
Ayrılabilen pencere alanları
Central widget
Merkezi pencere
Status bar
Durum çubuğu
Ayrıca QWidget’in sahip olduğu simge durumuna küçültme, ekranı kaplama, kapatma, en-boy ayarı yapma gibi özelliklere de sahiptir.
Not: QtDesigner kullanacağınız vakit pencere işlemleri çok daha pratik hale gelecektir.
Pencere Ayarları
Başlık Ayarlama
from PyQt4.QtGui import *import sysuygulama = QApplication(sys.argv)pencere = QWidget()pencere.setWindowTitle("python4hackers.com")pencere.show()uygulama.exec_()
Penceremizin başlığını setWindowTitle metoduyla kolayca değiştirebiliriz.
Pencere Boyutunu Ayarlama
from PyQt4.QtGui import *import sysuygulama = QApplication(sys.argv)pencere = QWidget()pencere.setWindowTitle("python4hackers.com")pencere.resize(1366,768)pencere.show()uygulama.exec_()
Kullanılan programın boyutunu resize metoduyla yapacağınız işleme göre en uygun boyutta ayarlayabilirsiniz.
Pencerenin Yerini Ayarlama
from PyQt4.QtGui import *import sysuygulama = QApplication(sys.argv)pencere = QWidget()pencere.setWindowTitle("python4hackers.com")pencere.resize(800,600)pencere.move(42,42)pencere.show()uygulama.exec_()
Pencerenin açılacağı konumu move metoduyla ayarladık. Girdiğimiz değerler üst koşeden x ve y düzlemi hesabıyla uzaklığı ifade eder. İlk değer x düzlemi, ikinci değer y düzlemidir.
Pencere Simgesi
from PyQt4.QtGui import *import sysuygulama = QApplication(sys.argv)pencere = QWidget()pencere.setWindowTitle("python4hackers.com")pencere.resize(800,600)jpg=QIcon("icon.jpg")pencere.setWindowIcon(jpg)pencere.show()uygulama.exec_()
Burada QIcon ve setWindowIcon metodunu beraber kullandık. Önce kullanacağınız simgeyi yazdığınız python kodunun bulunduğu dizine kopyalayın. Daha sonra QIcon ile değişkende tutup o değişkeni argüman olarak setWindowIcon’a verip pencereye ekleyin. Pencerenizin köşesinde görünecektir.
Sabit Boyutlu Pencere
from PyQt4.QtGui import *import sysuygulama = QApplication(sys.argv)pencere = QWidget()pencere.setWindowTitle("python4hackers.com")pencere.setFixedSize(800,600)pencere.show()uygulama.exec_()
Penceremizin boyutunda değişiklik yapılmasını istemiyorsak setFixedSize(x,y) metodunu kullanabiliriz.
Sabit Yükseklik
from PyQt4.QtGui import *import sysuygulama = QApplication(sys.argv)pencere = QWidget()pencere.setWindowTitle("python4hackers.com")pencere.setFixedHeight(500)pencere.show()uygulama.exec_()
Eğer düşey doğrultuda değişiklik yapılmasını istemiyorsak setFixedHeight(değer) kullanarak istediğimiz değere ayarlayabiliriz.
Sabit Genişlik
from PyQt4.QtGui import *import sysuygulama = QApplication(sys.argv)pencere = QWidget()pencere.setWindowTitle("python4hackers.com")pencere.setFixedWidth(900)pencere.show()uygulama.exec_()
Eğer yatay doğrultuda değişiklik yapılmasını istemiyorsak setFixedWidth(değer) kullanarak istediğimiz değere ayarlayabiliriz.
Maximum Boyut
from PyQt4.QtGui import *import sysuygulama = QApplication(sys.argv)pencere = QWidget()pencere.setWindowTitle("python4hackers.com")pencere.setMaximumSize(400,300)pencere.show()uygulama.exec_()
Bu kodu çalıştırdığınızda pencerenizi belirli bir seviyeye kadar büyütebileceğinizi göreceksiniz. Burada setMaximumSize(x,y) metodunu kullandık.
Maximum Yükseklik
from PyQt4.QtGui import *import sysuygulama = QApplication(sys.argv)pencere = QWidget()pencere.setWindowTitle("python4hackers.com")pencere.setMaximumHeight(200)pencere.show()uygulama.exec_()
En fazla ne kadar yükseklik istiyorsak onu setMaximumHeight ile atayabiliriz.
Maximum Genişlik
from PyQt4.QtGui import *import sysuygulama = QApplication(sys.argv)pencere = QWidget()pencere.setWindowTitle("python4hackers.com")pencere.setMaximumWidth(200)pencere.show()uygulama.exec_()
En fazla ne kadar genişlik istiyorsak onu setMaximumWidth ile atayabiliriz. Aynı zamanda setMinimumSize, setMinimumHeight, setMinimumWidth şeklindede kullanabiliriz.
Arka Plan Rengi
from PyQt4.QtGui import *import sysuygulama = QApplication(sys.argv)pencere = QWidget()pencere.setWindowTitle("python4hackers.com")pencere.setStyleSheet("background-color:black;")pencere.show()uygulama.exec_()
Arka plan renginde değişiklik yapmak istiyorsak eğer setStyleSheet metodunu kullanabiliriz. Rengin ingilizce karşılığını veya hex kodunu yazabilirsiniz. Renklerin hex kodları için bu siteyi inceleyin > color-hex
from PyQt4.QtGui import *import sysuygulama = QApplication(sys.argv)pencere = QWidget()pencere.setWindowTitle("python4hackers.com")pencere.showFullScreen()uygulama.exec_()
Penceremizin oyunlar gibi tam ekran açılmasını istiyorsak showFullScreen() metodunu kullanacağız. Kapatmak için Alt+Tab yapabilirsiniz 🙂
Maximum Boyutta Açma
from PyQt4.QtGui import *import sysuygulama = QApplication(sys.argv)pencere = QWidget()pencere.setWindowTitle("python4hackers.com")pencere.showMaximized()uygulama.exec_()
pencere.showMaximized() şeklinde kullanabiliriz. Bu yöntemin fullscreen’den farkı başlık çubuğumuzun kaybolmaması. Penceremizi rahatça kapatabiliriz.
Diğer kullanımları:
showMinimized()
showNormal()
Pencere Saydamlığı
from PyQt4.QtGui import *import sysuygulama=QApplication(sys.argv)pencere=QWidget()pencere.setWindowTitle("python4hackers.com")pencere.setWindowOpacity(0.6)pencere.show()uygulama.exec_()
Saydamlığı ayarlarken setWindowOpacity(float) kullanıyoruz. Saydamlık değerini sıfır ile bir arası değiştirebilirsiniz.
Son Söz
Gördüğünüz gibi metodlar çok fazla.. İlerleyen zamanlarda yeni metodlar ekleyerek bu konuyu güncelleyebilirim. Biz QWidget penceresi üzerinde çalıştık. Diğer pencere türleriyle çalışabilecek ortak metodlar var. Bunların listesini araştırarak bulabilirsiniz. Bu siteyi tavsiye ederim: nullege.com Yanlışım varsa yorum yazabilirsiniz. Vakit buldukça konulara devam edeceğim.
“Bırakın doğruları gelecek söylesin ve herkesi eserlerine ve başarılarına göre değerlendirsin. Bugün onların olsun; ama uğrunda çok uğraştığım gelecek, benimdir.”