İçeriğe geç →

Python İle Masaüstü Uygulama Geliştirme – 1

Python ile masaüstü uygulaması nasıl geliştirilirmiş öğrenmek için hazırım ve hemen başlıyorum. Benimle beraber bu eğitim serisini takip edecek olan varsa en azından bir programlama dilinde altyapınız ve az çok Python’un dil kurallarını bilmeniz gerek. Çünkü bunlara değinmeyeceğim.

Bu eğitim setinde ana kaynağım Python Desktop Application Development

Gerekli Araçlar

Ayrıca Linux Mint üzerinde çalışıyorum.

Kısa bir göz atış

İlk bilmen gereken PyQt elemanlarının Q ile başladığı. Mantığı Jquery de $ işareti ile başlamamız ile aynı. Q ile başlıyorsa PyQt kullanıyoruz demektir.

from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys

class HelloWorld(QDialog):
    def __init__(self):
        QDialog.__init__(self)

        layout = QVBoxLayout()

        label = QLabel("Hello!")
        line_edit = QLineEdit()
        button = QPushButton("Buton")

        layout.addWidget(label)
        layout.addWidget(line_edit)
        layout.addWidget(button)

        self.setLayout(layout)
        button.clicked.connect(self.close)
        line_edit.textChanged.connect(label.setText)

app = QApplication(sys.argv)
dialog = HelloWorld()
dialog.show()
app.exec_()

QDialog, popup gibi ama normal bir pencere ekranının (QMainWindow) sahip olduğu tüm özellikleri yerine getirebilecek şekilde kullanılabiliniyor ve daha fazla fonksiyon sunuyor. HelloWorld sınıfını QDialog olarak kullanacağız.

Layout olarak vertical, horizontal, grid, form seçeneklerimiz var.

  • QVBoxLayout ile vertical layout’u seçmiş olduk.
  • Horizontal için QHBoxLayout seçilmeli.
  • Grid için QGridLayout kullanabiliriz. Bu durumda widget elementini oluştururken 2. ve 3. parametre olarak satır ve sütun değerini de göndermemiz gerek.
  • QFormLayout grid gibi ama sadece 2 sütunluk yapılar oluşturabiliriz.
grid = QGridLayout()

label = QLabel("Hello!")
line_edit = QLineEdit()
button = QPushButton("Buton")

layout.addWidget(label, 0, 0)
layout.addWidget(line_edit, 0, 1)
layout.addWidget(button, 1, 1)

Qlabel etiket, QlineEdit tek satırlık metin alanı, QPushButton buton oluşturmamıza yarıyor.

addWidget ile bu elemanları layouta ekledik ve setLayout ile de dialog penceresine şablonu atadık.

Events

button.clicked.connect(self.close)
line_edit.textChanged.connect(label.setText)

PyQt ile bir olay gerçekleştirdiğinde müdahale etmek için connect() metodunu kullanıyoruz. Bu metoda parametre olarak bir fonksiyon göndermemiz gerek. yukarıda close ve setText için parantez kullanmamış olsak bile bunlar yine fonksiyon olarak algılanacaktır.

close ve setText, PyQt ile gelen hazır metotlar. close() pencereyi sonlandırıyor. setText() ise metni yeniden düzenliyor.

Kategori: Python

4 Yorum

  1. Burhan Burhan

    Hocam kısıtlamalar var mı masaüstü uygulama geliştirirken? Ben bu konuyu merak ediyorum. Mesela sadece basit form uygulamaları mı yapılabilir sadece?

    • yusufkaracin yusufkaracin

      Bu yazıyı 6 yıl önce, masaüstü uygulama geliştirmeye giriş niteliğinde olması için yazmıştım. Şu anda PyQt6.1 versiyonu çıkmış durumda. Bu kadar süre içinde birçok şey değiştiğine eminim. Basit form uygulamalarının ötesine geçilebilir tabii ki. Kısıtlamalar konusunda; Python ile yapabildiğiniz her şeyi PyQt ile de yapabilirsiniz. PyQt’nin amacı görsel bir arayüz sunmanıza yardımcı olmak.

  2. Adil GÜÇLÜ Adil GÜÇLÜ

    Yaptığımız masaüstü uygulamanın çalışması için kullanıcının bilgisayarında python, pycharm vs. kurulu mu olmalı yoksa standalone uygulama olarak mı çalışıyor.

Siz de düşüncelerinizi paylaşın

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.