1 Ağustos 2014 Cuma

PyQt QLineEdit Kullanımı

       Bu yazımızda sizlere QLineEdit yani kullanıcıdan veri almamızı sağlayan kutucuklardan bahsedeceğiz. Kullanıcıdan bu kutucuklar ile bilgilerini alıp, aldığımız bu verileri de bir dosyaya kaydedeceğimiz örnek bir uygulama yapalım. Bu sayede anlaşılması kolay olur hem de dosya işlemlerini kısaca bir tekrar etmiş oluruz.
       Izgara pencere düzeni kullanarak kullanıcıdan adını, soyadını, yaşını ve bölümünü alacağımız alanları belirtelim, aldığımız bu verileri dosyaya kaydetmek için bir de buton oluşturalım ve bunları penceremize yerleştirelim.
Hazırlamış olduğumuz örnek kodlarımız şu şekilde:
# !/usr/bin/env python
# -*- coding: cp1254 -*-
 
from PyQt4.QtGui import *
from PyQt4.QtCore import *

class QLineEdit_Kullanimi(QDialog):
    def __init__(self, parent=None):
        super(QLineEdit_Kullanimi, self).__init__(parent)

        self.ad = QLabel('Ad:')
        self.soyad = QLabel('Soyad:')
        self.yas = QLabel('Yaş:')
        self.bolum = QLabel('Bölüm:')

        self.adi = QLineEdit()
        self.soyadi = QLineEdit()
        self.yasi = QLineEdit()
        self.yasi.setInputMask('99')
        self.bolumu = QLineEdit()
        
        self.kaydet = QPushButton('Kaydet')
        self.connect(self.kaydet, SIGNAL('pressed()'), self.dosyayaYaz)

        izgara = QGridLayout()
        izgara.addWidget(self.ad, 0, 0,)
        izgara.addWidget(self.soyad, 1, 0,)
        izgara.addWidget(self.yas, 2, 0,)
        izgara.addWidget(self.bolum, 3, 0,)
        
        izgara.addWidget(self.adi, 0, 1,)
        izgara.addWidget(self.soyadi, 1, 1,)
        izgara.addWidget(self.yasi, 2, 1,)
        izgara.addWidget(self.bolumu, 3, 1,)

        izgara.addWidget(self.kaydet, 4, 1,)

        self.setLayout(izgara)
        self.setWindowTitle('PyQt QLineEdit')
        

    def dosyayaYaz(self):
        dosya = open('Çıktı.txt', 'w')
        dosya.write(self.adi.text() + '\n' + self.soyadi.text() + '\n' + self.yasi.text() + '\n' + self.bolumu.text())
        dosya.close()        
        self.adi.setText('')
        self.soyadi.setText('')
        self.yasi.setText('')
        self.bolumu.setText('')

uygulama = QApplication([])
pencere = QLineEdit_Kullanimi()
pencere.show()
uygulama.exec_()

Bu programımızı çalıştırdığımızda şekildeki gibi bir ekran bizi karşılayacaktır.

Sonrasında bu formu doldurup "Kaydet" butonuna tıkladığımızda kodlarımızı yazdığımız dosya ile aynı dizinde "Çıktı.txt" isimli bir dosya oluşacaktır. Bu dosyayı açıp baktığımızda ise içeriği şöyledir:
Uygar
Köroğlu
22
Bilgisayar Mühendisliği

Şimdi yukarıdaki yazmış olduğumuz kodları kısaca açıklayalım. Burada da sadece farklı olarak yazdığımız kodları açıklayacağız.

11-12-13-14. Satırlar  = Bu satırlarda kutucukları anlamlandırmak için Label oluşturuyoruz.
16-17-18-20. Satırlar = Bu dört satırda kullanıcıdan veri almak için kutucuk oluşturuyoruz.
19. Satır = Bu satırda kişiye ait yaşı alırken kullanıcının gireceği veriye bir sınırlama getirdiğimizi belirtiyoruz. Buraya yazdığımız '9' sayısının kaç adet olduğu ile kaç karakter girilebileceğini ve bu sayının kendisi ise buraya [0, 9] aralığında bir rakamın girilebileceğini belirtmektedir. Yani bu şekilde kullanıcının yalnızca sayı girmesi ve bu sayının da maksimum iki basamaklı olabileceğini belirtmiş olduk.
22. Satır = Bu satırda da "Kaydet" butonumuzu oluşturduk.
23. Satır = Bu satırda da butona tıklandığında verileri dosyaya yazacak olan metodu çağırdık.
42. Satır = Buton tıklandığında çalışacak olan metodu tanımladık.
43. Satır = "Çıktı.txt" isminde bir dosyayı yazma modunda açıyoruz.
44. Satır = Kutucuklardan aldığımız verileri satır satır dosyaya yazıyoruz.
45. Satır = Dosyamızı kapatıyoruz.
46-47-48-49. Satırlar = Bu satırlarda dosyaya yazma işleminden sonra kutucukların içini temizliyoruz. Bir nevi kaydettiğimizin de farkına varabilmemiz için bunu yazdık.

       Yukarıda 19. satırda bahsetmiş olduğumuz setInputMask() metodu ile verebileceğimiz kısıtlamalar için kullanabileceğimiz parametrelerden bahsetmek istiyorum. Bu parametreler ile kullanıcının gireceği karakterlere belli kısıtlamalar getiriyoruz, bu kısıtlamalar sayesinde kullanıcıların geçersiz karakterler girmesinin önüne geçilebilir. Bu metot ile kullanabileceğimiz parametreler şu şekilde:

h       =>       Hexadecimal (onaltılık) karakterler için kullanılır, zorunluluk gerektirmez.
H      =>       Hexadecimal (onaltılık) karakterler için. a-f, A-F, 0-9
b       =>       Binary (ikilik) karakterler için kullanılır, zorunluluk gerektirmez.
B      =>       Binary (ikilik) karakterler için. 0-1
0       =>       ASCII sayılar için kullanılır, zorunluluk gerektirmez. 0-9
9       =>       ASCII sayılar için
d       =>       ASCII sayılar için kullanılır, zorunluluk gerektirmez. 1-9 (0 yok)
D      =>       ASCII sayılar için
#       =>       ASCII sayılar ve artı eksi işareti için kullanılır, zorunluluk gerektirmez.
a       =>       ASCII alfabe karakterleri için kullanılır, zorunluluk gerektirmez. a-z, A-Z
A      =>       ASCII alfabe karakterleri için
n       =>       ASCII sayısal karakterler için kullanılır, zorunluluk gerektirmez.
N      =>       ASCII alfabe karakterler için a-z, A-Z, 0-9
x       =>       Herhangi bir karakter olabilir, zorunluluk gerektirmez.
X      =>       Herhangi bir karakter olabilir
>      =>       Bu karakterden sonra gelecek olan bütün alfabe büyük harf olacak.
<      =>       Bu karakterden sonra gelecek olan bütün alfabe küçük harf olacak.
!       =>       Büyük-Küçük harf zorunluluğunu kapatır.


Kaynaklar:
-Mustafa Başer - Python Kitabı

1 yorum :