Categories: Python

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.

Share
Published by
yusufkaracin

Recent Posts

Celery Checklist [Python]

Celery ile alakalı "best practice"leri ve faydalı araçları bir araya getiren güzel bir checklist'e denk…

4 yıl ago

JavaScript Dizileri için 13 İpucu

Diziler en temel ve sık kullandığımız araçlardan... Kod yazarken işimizi kolaylaştıracak, daha temiz kod yazmamızı…

4 yıl ago

List & Tuple Mini Test (Python)

listve tuple bilginizi test etmek ister misiniz? realpython.com da keşfettiğim ve Türkçe'ye çevirdiğim mini teste…

5 yıl ago

Bilmeniz Gereken 11 Python Mülakat Sorusu

Rehberlik sağlaması ve bilgi tazelemesi açısından faydalı olduğunu düşündüğüm bir Toptal blog paylaşımınıTürkçe'ye çevirdim.Devamını okuyunBilmeniz…

5 yıl ago

Angular Componentlere Konsol Üzerinden Hızlı Erişim

Angular componentlerine console üzerinden hızlıca erişmek için kullanılan bir teknik. Unutmamak için kendime not düşüyorum.Devamını…

5 yıl ago

Birkaç Güzel JavaScript Sorusu İster Miydiniz?

Geçtiğimiz günlerde keşfettiğim ve oldukça da hoşuma giden repoyu paylaşmak istiyorum: lydiahallie/javascript-questions Genel olarak temel…

5 yıl ago