Python Masaüstü Uygulaması - 1: PyQt5 ile Kullanıcı Arayüzü Tasarımı (Qt Designer)

kusha · 03 Ağustos 2026 · 7 dk okuma

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.py içinde pyuic5'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.