В базу данных (при трёх значениях) сохраняет первое значение выводится 3 раза, второе 2 раза,третье 1 раз. Почему?

Я делаю приложение заметок, и при нажатии кнопки Save ALL все значения сохраняются в базу данных. Но как я говорил они сохраняются неправильно. На скриншотах всё будет понятно. Заранее СПАСИБО! сзади моё приложение

from pyclbr import Class from tkinter.tix import TEXT from PyQt5.QtWidgets import* from PyQt5.QtGui import* from PyQt5.QtCore import* import sys import sqlite3

conn = sqlite3.connect('todo.db')
cur = conn.cursor()
cur.execute("""CREATE TABLE IF NOT EXISTS todo_list(
list_item TEXT);
""")
conn.commit()
conn.close()

class Main_WINDOW(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('Заметки')
        self.setGeometry(10,30,1920,1080)
        self.setStyleSheet('.Main_WINDOW {background-image: url(Background (1).jpg);}')
        self.button()

    def button(self):

        self.list_widget = QListWidget(self)
        self.list_widget.setGeometry(465, 510, 825, 304)
        self.list_widget.setStyleSheet("QListWidget{font-size: 54pt;}")

        self.text1 = QLineEdit(self)
        self.text1.setGeometry(500, 240, 780, 60)
        self.text1.setStyleSheet("QLineEdit{font-size: 28pt;}")

        self.text2 = QLineEdit(self)
        self.text2.setGeometry(585, 411, 720, 60)
        self.text2.setStyleSheet("QLineEdit{font-size: 28pt;}")

        instr = QLabel('Для редакта нажмите два раза по объекту', self)
        instr.setGeometry(650, 850, 780, 60)
        instr.setFont(QFont('Tekton Pro', 20, 23, True))

        btn_add = QPushButton('Add', self)
        btn_add.setGeometry(1300, 240, 125, 60)
        btn_add.setStyleSheet('.QPushButton {background-image: url(Window (2).jpg); color: white;}')
        btn_add.setFont(QFont('Arial', 22, 23, False))
        btn_add.clicked.connect(self.Add)
        
        btn_save = QPushButton('Save', self)
        btn_save.setGeometry(1325, 410, 105, 62)
        btn_save.setStyleSheet('.QPushButton {background-image: url(К.jpg); color: #ff4193;}')
        btn_save.setFont(QFont('Arial', 22, 30, False))
        btn_save.clicked.connect(self.Save)

        btn_saveALL = QPushButton('Save all', self)
        btn_saveALL.setGeometry(1530, 145, 170, 170)
        btn_saveALL.setStyleSheet('.QPushButton {background-image: url(SaveA.jpg); color: #000000;}')
        btn_saveALL.setFont(QFont('Nueva Std Cond', 31, 60, False))
        btn_saveALL.clicked.connect(self.SaveAL)

        self.get_items()

    def get_items(self):
        conn = sqlite3.connect('todo.db')
        cur = conn.cursor()
        cur.execute('SELECT * FROM todo_list')
        rows = cur.fetchall()
        conn.commit()
        conn.close()
        for row in rows:
            self.list_widget.addItem(str(row[0]))

    def Add(self):
        iteme = self.text1.text() #.text() Получение текста
        self.list_widget.addItem(iteme) #.addItem Добавление в список
        iteme = self.text1.setText("")# setText() -  доб. текста в QLineEdit
    
    def delite_item(self):
        clicked = self.list_widget.currentRow() #получение индекса текущей строки
        self.list_widget.takeItem(clicked)

    def redact(self, item):
        clicked = self.list_widget.currentRow()
        TEXT =  self.text2.setText(item.text())
        self.list_widget.takeItem(clicked)

    def Save(self):
        itema = self.text2.text()
        self.list_widget.addItem(itema)
        itema = self.text2.setText("")
    
    def SaveAL(self):
        conn = sqlite3.connect('todo.db')
        cur = conn.cursor()
        cur.execute("""DELETE FROM todo_list;""")
        items = []
        for i in range(self.list_widget.count()):
            items.append(self.list_widget.item(i))
            for item in items:
                cur.execute("""INSERT INTO todo_list (list_item) VALUES (:item);""",{'item':item.text()})
        conn.commit()
        conn.close()       
    
if __name__ == '__main__':
    App = QApplication([])
    w = Main_WINDOW()
    w.show()
    App.exec_()

Ответы (0 шт):