PyQt5 Dersleri – QFileDialog() ve QTextEdit()

Bu etkinliğimizde QFileDialog ile aldığımız dosyamızı 

( dosyaAdi = QFileDialog.getOpenFileName(self,"Dosya Seçimi Yapınız","../Desktop/","Metin Belgesi (*.txt)") )

açarak içeriğini QTextEdit() içerisine aktarıyoruz. Bu QTextEdit içerisinde kelimelerin, harflerin ve satırların sayısını öğreniyoruz.

Etkinliğimizi indirmek ve incelemek için İndir !

from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *

import sys

class Pencere(QMainWindow):
def __init__(self):
super(Pencere, self).__init__()
self.anasayfa = anaSayfa()
self.setCentralWidget(self.anasayfa)
self.setUI()

def setUI(self):
self.statusBar()

#ac butonu toolbar oluşturma
aracKutusu = self.addToolBar("Araç Kutusu")
ac = QAction("Aç",self)
ac.setIcon(QIcon("../PyQt5_Dersleri/icons/bilgi.png"))
ac.setStatusTip("Dosya Aç")
aracKutusu.addAction(ac)

# ac butonuna basıldığında
ac.triggered.connect(self.dosyaAc)

self.setGeometry(1000, 150, 500, 300)
self.setWindowIcon(QIcon("../PyQt5_Dersleri/icons/bilgi.png"))
self.setWindowTitle("Metin Belgesi İstatistik")
self.show()

def dosyaAc(self):
dosyaAdi = QFileDialog.getOpenFileName(self,"Dosya Seçimi Yapınız","../Desktop/","Metin Belgesi (*.txt)")
if dosyaAdi[0]:
with open(dosyaAdi[0],"r")as dosya:
veriler = dosya.readlines()

# Dosyadan gelen metinler içerisinde boş satırları almamak için
liste = []
for veri in veriler:
if veri != "\n":
liste.append(veri[:-1])

metin= "\n".join(liste)
self.anasayfa.metinKutusu.setText(metin)

#Kelime Sayısı
self.anasayfa.toplamKelime.setText(str(metin.count(" ") + 2))
self.anasayfa.toplamKarakter.setText(str(self.karakterSayisi(metin)-1))
self.anasayfa.toplamSatir.setText(str(len(liste)))

def karakterSayisi(self,metin):
kSayisi = 0

for karakter in metin:
kSayisi+=1

return kSayisi


class anaSayfa(QWidget):
def __init__(self):
super(anaSayfa, self).__init__()
self.setUI()

def setUI(self):
# QFormLayout ile anaSayfa mıza bir form düzeni ekliyoruz
form = QFormLayout()
self.metinKutusu = QTextEdit()
form.addRow(self.metinKutusu)

# Label lamımızı oluşturalım
self.toplamKelime = QLabel()
self.toplamKelime.setFont(QFont("Calibri",13))
self.toplamKarakter = QLabel()
self.toplamKarakter.setFont(QFont("Calibri", 13))
self.toplamSatir = QLabel()
self.toplamSatir.setFont(QFont("Calibri", 13))

form.addRow("Toplam Kelime Sayısı : ",self.toplamKelime)
form.addRow("Toplam Karakter Sayısı : ", self.toplamKarakter)
form.addRow("Toplam Satır Sayısı : ",self.toplamSatir)


# QForm düzeni ayarlanıyor
self.setLayout(form)

if __name__ =="__main__":
app = QApplication(sys.argv)
pencere = Pencere()
sys.exit(app.exec())