PyQt5 Dersleri – QListWidget

İki tane QlistWidget ımıza karşılıklı birbirleri arasından veri aktarma ile ilgili etkinliğimiz. İndirmek ve incelemek için İndir !

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

import sys

class anaPencere(QMainWindow):
    def __init__(self):
        super(anaPencere, self).__init__()
        self.pen = Pencere()
        self.setCentralWidget(self.pen)

        self.setStatusBar(self.pen.durumCubugu)
        self.setWindowTitle("Listeden Bir Başka Listeye Veri Atmak")
        self.setWindowIcon(QIcon("../PyQt5_Dersleri/icons/bilgi.png"))
        self.setGeometry(1000, 400, 400, 200)

        self.show()

class Pencere(QWidget):
    def __init__(self):
        super(Pencere, self).__init__()
        self.asagiListe = []
        self.Veriler = self.ListeVeriAl()
        self.setUI()

        self.durumCubugu = QStatusBar()

    def setUI(self):
        form = QFormLayout()

        self.solListem = QListWidget()
        self.sagListem = QListWidget()

        self.solListem.addItems(self.Veriler)

        solButton = QPushButton("Yukarıdan Aşağı")
        solButton.clicked.connect(self.yukardanEkle)
        sagButton = QPushButton("Aşşağıdan Yukarı")
        sagButton.clicked.connect(self.asagidanEkle)

        h_Box = QHBoxLayout()
        h_Box.addWidget(solButton)
        h_Box.addWidget(sagButton)

        form.addRow(self.solListem)
        form.addRow(h_Box)
        form.addRow(self.sagListem)

        self.setLayout(form)
        #self.show()

    def yukardanEkle(self):
        try:
            self.sagListem.addItem(self.solListem.currentItem().text())
            self.Veriler.pop(self.solListem.currentRow())
            self.asagiListe.append(self.solListem.currentItem().text())
            self.solListem.clear()
            self.solListem.addItems(self.Veriler)
        except:
            self.durumCubugu.showMessage(" Hata Lütfen Listeden seçim yapınız !",2000)

    def asagidanEkle(self):
        print(self.asagiListe)
        try:
            self.solListem.addItem(self.sagListem.currentItem().text())
            self.asagiListe.pop(self.sagListem.currentRow())
            self.Veriler.append(self.sagListem.currentItem().text())
            self.sagListem.clear()
            self.sagListem.addItems(self.asagiListe)
        except:
            self.durumCubugu.showMessage(" Hata Lütfen Listeden seçim yapınız !",2000)

    def ListeVeriAl(self):
        try:
            with open("sol.txt","r") as dosya:
                veriler = dosya.readlines()
        except FileNotFoundError:
            liste = ["Yılmaz Aydın\n", "Demet Akbağ\n", "Oya Başar\n"]
            with open("sol.txt","w") as dosya:
                dosya.writelines(liste)

        #Dosyada ENTER lar gitmesin listeWidget e .
        liste = []
        for lis in veriler:
            liste.append(lis[:-1])
        return liste

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