#Python#PyQt5#Desktop

PyQt5 ile Masaüstü Uygulama Geliştirmenin Pis Gerçeği

ET
Erkan Turgut
Author
December 15, 2025
Published
2 min read
Reading Time

PyQt5'i ilk öğrenmeye başladığımda Google'da aradığım şeylerin büyük çoğunluğunun cevabı C++ ile yazılmış Qt dokümantasyonundan geliyordu. Python için bir satır kod bulmak bazen saatler alıyordu. Bu biraz can sıkıcı, ama zamanla alışıyorsunuz.

Neden PyQt5 diye sorulursa: Tkinter ile başlamıştım ama Tkinter'ın görünümü 2001'de kalmış gibi. PySide6 daha modern, lisans açısından da daha esnek, ama o sırada PyQt5 üzerine daha fazla kaynak vardı. Wxpython'a da baktım, bir daha bakmadım.

Sinyal-Slot Mekanizması

Qt'nin en güçlü özelliği bence sinyal-slot sistemi. Event-driven programlama için çok temiz bir yaklaşım. Ama ilk gördüğünüzde neden bu şekilde çalıştığını anlamak zaman alıyor.

button.clicked.connect(self.on_button_clicked)

Başta garip geliyor. Ama bir süre sonra bu sistemin ne kadar temiz olduğunu anlıyorsunuz. Sinyaller ve slotlar arasında doğrudan bağlantı kurabiliyorsunuz, birden fazla slot bağlayabiliyorsunuz, hatta sinyalleri sinyallere bağlayabiliyorsunuz.

Threading Meselesi

PyQt5'te UI thread'i dışında UI güncellemesi yapamıyorsunuz. Bunu anlamadan önce uygulamamın çalışırken donmasına neden oldu. Arka planda bir işlem çalışırken ekranı güncellemek istiyorsanız QThread kullanmanız gerekiyor:

class Worker(QThread):\n    progress = pyqtSignal(int)\n    finished = pyqtSignal(str)\n\n    def run(self):\n        for i in range(100):\n            time.sleep(0.05)\n            self.progress.emit(i)\n        self.finished.emit('Tamamlandi')

Mantığı oturduktan sonra oldukça temiz bir çözüm.

PyInstaller ile Dağıtım

Uygulamayı .exe'ye çevirmek için PyInstaller kullandım.

pyinstaller --onefile --windowed main.py

Ama gerçek hayat bu kadar basit değil. Bazı bağımlılıklar hidden import olarak eklenmesi gerekiyor. Antivirüsler bazen false positive veriyor. Bir .spec dosyası oluşturup her şeyi oradan yönetmek daha stabil.

Sonuç

PyQt5 güçlü bir araç. Kendi bilgisayarında çalışan, internet gerektirmeyen araçlar yapmak için hâlâ en iyi seçeneklerden biri.

Share this post

Share it with your friends if you enjoyed it

ET

Erkan Turgut

As a Full Stack Developer, I build user-friendly and performant applications with modern web technologies.