Bu dersten itibaren, birkaç bölüm süren bir mini proje yapacağız: PyQt5 ile bir kayıt/listeleme masaüstü uygulaması. İlk bölümde arayüzü, kod yazmadan sürükle-bırak yöntemiyle Qt Designer'da tasarlayacağız.
Qt Designer'ı Kurmak
Qt Designer, PyQt5'in resmi form tasarım aracıdır. pip install pyqt5-tools ile kurabileceğiniz pakette birlikte gelir; kurulum sonrası genellikle venv/Lib/site-packages/qt5_applications/Qt/bin/designer.exe yolunda bulunur.
Formu Tasarlamak
Qt Designer açıldığında Main Window şablonunu seçip boş bir pencere oluşturun. Sol taraftaki widget kutusundan istediğiniz bileşenleri sürükleyip forma bırakabilirsiniz:
- Label: sabit metin etiketleri (ör. "Ad:", "Şirket:").
- Line Edit: kullanıcının veri gireceği metin kutuları (Excel'deki bir hücre gibi düşünebilirsiniz).
- Push Button: tıklanabilir düğmeler ("Ekle", "Sil" gibi).
- Table Widget: kayıtları satır/sütun halinde göstereceğiniz tablo.
- Combo Box: filtreleme için açılır liste.
Her bileşeni yerleştirdikten sonra, sağ paneldeki objectName alanından anlamlı bir isim verin (ör. ln_ad, btn_ekle, tbl_kayitlar) — bu isimler, kodda o bileşene erişirken kullanacağınız değişken adları olacak.
Formu Kaydetmek
Tasarımı .ui uzantısıyla proje klasörünüze kaydedin (ör. panel.ui).
.ui Dosyasını Python Koduna Çevirmek
Qt Designer'ın ürettiği .ui dosyası XML formatındadır — doğrudan çalıştırılamaz, Python koduna çevrilmesi gerekir. Bunun için pyuic5 aracını kullanan küçük bir script yazabilirsiniz:
from PyQt5 import uic
with open("panel.py", "w", encoding="utf-8") as f:
uic.compileUi("panel.ui", f)
Bu script'i her çalıştırdığınızda, panel.ui'daki güncel tasarım panel.py dosyasına (Python koduna) yeniden derlenir — tasarımda bir değişiklik yaptığınızda bu adımı tekrarlamanız gerekir.
Uygulamayı Çalıştırmak
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from panel import Ui_MainWindow
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
if __name__ == "__main__":
app = QApplication(sys.argv)
pencere = MainWindow()
pencere.show()
sys.exit(app.exec_())
Ui_MainWindow,panel.pyiçindepyuic5'in ürettiği sınıftır — tasarımınızdaki tüm bileşenleri içerir.self.setupUi(self), bu tasarımı pencerenize uygular.sys.exit(app.exec_()), pencerenin çarpı (X) tuşuyla düzgün şekilde kapanmasını sağlar — bu satır olmadan pencere kapanmayabilir.
Sırada Ne Var?
Sırada, bu arayüzü sqlite3 ile birleştirip gerçek kayıt ekleme ve listeleme işlevlerini kodlayacağız.