В базу данных (при трёх значениях) сохраняет первое значение выводится 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_()