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 sys
uygulama = 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 QtGui
import sys
uygulama = QtGui.QApplication(sys.argv)
pencere  = QtGui.QMainWindow()
pencere.show()
uygulama.exec_()

Pencere Tipleri

1- QWidget

from PyQt4.QtGui import *
import sys
uygulama = 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 sys
uygulama = 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 sys
uygulama = QApplication(sys.argv)
pencere  = QMainWindow()
pencere.show()
uygulama.exec_()

MainWindow resimde gördüğünüz gibi bölgelere sahiptir.

Menu barMenü çubuğu
Toolbar areasAraç çubuğu alanları
Dock window areasAyrılabilen pencere alanları
Central widgetMerkezi pencere
Status barDurum ç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 sys
uygulama = 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 sys
uygulama = 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 sys
uygulama = 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 sys
uygulama = 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 sys
uygulama = 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 sys
uygulama = 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 sys
uygulama = 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 sys
uygulama = 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 sys
uygulama = 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 sys
uygulama = 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 sys
uygulama = 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

pencere.setStyleSheet("background-color:#a2988e;")

Tam Ekran

from PyQt4.QtGui import *
import sys
uygulama = 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 sys
uygulama = 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 sys
uygulama=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.”

Nikola Tesla

1 - 0

Thank You For Your Vote!

Sorry You have Already Voted!