Не работает код создания виджета
Написала код:
import sqlite3
from PyQt5.QtWidgets import QWidget, QApplication, QListWidgetItem
from PyQt5.uic import loadUi
import sys
from pyqt5_plugins.examples.exampleqmlitem import QtCore
#конструктор для супер класса:
class Window(QWidget):
def __init__(self):# функция инициализации, здесь прописываются события которые приводят к изменениям и которые мы фиксируем
super(Window, self).__init__()
loadUi("main.ui", self)# загружаю пользовательский интерфейс
self.calendarWidget.selectionChanged.connect(self.calendarDateChanged) #виджет календаря, если изменяется, подключаемся,вызываем самостоятельно
self.calendarDateChanged()#вызываю функцию списка
self.pushButton.clicked.connect(self.saveChanges)
#функция извлечет выбранную дату и обновит список задач
def calendarDateChanged(self):#определить дату изменения календаря
print("Дата изменилась")
dateSelected= self.calendarWidget.selectedDate().toPyDate() #извлечь дату, дата выбрана в виджете календаря, вывод изменен, преобразовываем в вид(год, месяц,день) через тире
print("Дата выбрана:", dateSelected)
self.updateTaskList(dateSelected)#хочу передать выбранную дату в обновленный список задач,
def updateTaskList(self, date):
db = sqlite3.connect("data2.db")
cursor = db.cursor()#запрашиваю курсор
query = "SELECT task, completed FROM tasks WHERE date = ? "#что я запрашиваю, из какой таблицы, дату указываем сами поэтому пока ставим вопросительный знак,
row = (date, )
results = cursor.execute(query, row).fetchall()#курсор выполняет запрос, передаю строку которая содержит дату, выбери все
for result in results:
item = QListWidgetItem(str(result[0]))#получаю результат, добавляю его в виджет списка очередей
item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable)#элемент виджета спискка, флаг, получаем флажок, берем заранее установленные флажки, добавлем флаг)
if result[1] == "YES":
item.setCheckState(QtCore.Qt.Checked) # делаем так чтобы изначально задачи не были отмечены
elif result[1] == "NO":
item.setCheckState(QtCore.Qt.Unchecked) # делаем так чтобы изначально задачи не были отмечены
self.tasksListWidget.addItem(item)
def saveChanges(self):
db = sqlite3.connect("data2.db")
cursor = db.cursor() # запрашиваю курсор
date = self.calendarWidget.selectedDate().toPyDate()
for i in range(self.tasksListWidget.count()): #для каждого элемента в виджете списка, количество элементов
item = self.tasksListWidget.item(i)
task = str(item)
if item.checkState() == QtCore.Qt.Checked:#проверить установлен ли флажок
query = "UPDATE tasks SET completed = 'YES' WHERE task = ? AND date = ?" #запрос, команда обновления, обновить задачи
else:
query = "UPDATE tasks SET completed = 'NO' WHERE task = ? AND date = ?"
row = (task, date, )#значения вопросительных знаков
cursor.execute(query, row)#запрос и строка
db.commit()#зафиксировать изменения в базе данных
#определяю основную часть моего кода
if __name__=="__main__":
app = QApplication(sys.argv) #создаю приложение арр,передаю аргументы очереди
window = Window()#определяем виджет, после приложения
window.show()#показать окно
sys.exit(app.exec())#выйдите из системы
Выдал нужное окно, но кнопка pushButton не нажимается, по идее она должна сохранять отмеченные или нет значки, но не сохраняет.