fix error:

import sys
from PyQt6.QtWidgets import (
    QApplication,
    QMainWindow,
    QWidget,
    QLabel,
    QTextEdit,
    QPushButton,
    QVBoxLayout,
    QHBoxLayout,
    QScrollArea,
    QMenuBar,
    QMenu,
    QAction,
    QMessageBox,
)
from PyQt6.QtCore import Qt, QPropertyAnimation, QRect
from PyQt6.QtGui import QFont, QPalette, QColor

class BooklandApp(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("بوک لند")
        self.setFixedSize(800, 600)
        self.is_dark_mode = False
        self.init_ui()

    def init_ui(self):
        # تنظیم رنگ‌ها
        self.light_colors = {
            "background": "#FFFFFF",
            "color1": "#96CEB4",  # سبز روشن
            "color2": "#FFAD60",  # نارنجی
            "color3": "#A02334",  # قرمز تیره
            "color4": "#FFEEAD",  # زرد روشن
            "text": "#000000",
        }
        self.dark_colors = {
            "background": "#333333",
            "color1": "#5A9A81",
            "color2": "#CC8533",
            "color3": "#70121A",
            "color4": "#5A5A4D",
            "text": "#FFFFFF",
        }
        self.colors = self.light_colors

        # تنظیم ویجت و لایه اصلی
        main_widget = QWidget()
        self.setCentralWidget(main_widget)
        self.main_layout = QVBoxLayout()
        main_widget.setLayout(self.main_layout)

        # تنظیم منوی همبرگری
        menu_bar = QMenuBar()
        menu = QMenu("≡", self)
        menu_bar.setCornerWidget(menu)
        self.setMenuBar(menu_bar)
        # افزودن اقدامات به منو
        settings_action = QAction("تنظیمات", self)
        about_action = QAction("درباره", self)
        menu.addAction(settings_action)
        menu.addAction(about_action)

        # افزودن گزینه حالت تاریک
        dark_mode_action = QAction("حالت تاریک", self)
        dark_mode_action.setCheckable(True)
        dark_mode_action.triggered.connect(self.toggle_dark_mode)
        menu.addAction(dark_mode_action)

        # ایجاد منطقه اسکرول برای محتوای اصلی
        scroll_area = QScrollArea()
        scroll_area.setWidgetResizable(True)
        scroll_content = QWidget()
        scroll_area.setWidget(scroll_content)
        self.scroll_layout = QVBoxLayout()
        self.scroll_layout.setAlignment(Qt.AlignmentFlag.AlignRight)
        scroll_content.setLayout(self.scroll_layout)

        # بخش‌های مورد نیاز (به فارسی)
        sections = [
            ("کارهای روزانه", "daily_tasks"),
            ("شکرگزاری", "thanksgiving"),
            ("ساعت‌های مطالعه", "study_hours"),
            ("آهنگ امروز", "todays_song"),
            ("زمان بیدار شدن", "when_i_woke_up"),
            ("انگیزه امروز", "todays_motivation"),
        ]

        # ایجاد فیلدهای ورودی برای هر بخش
        self.inputs = {}
        for title, name in sections:
            label = QLabel(title)
            label.setFont(QFont("B Nazanin", 14))
            label.setAlignment(Qt.AlignmentFlag.AlignRight)
            label.setStyleSheet(f"color: {self.colors['color3']};")

            text_edit = QTextEdit()
            text_edit.setFixedHeight(80)
            text_edit.setStyleSheet(f"background-color: {self.colors['color4']}; border-radius: 5px;")
            text_edit.setAlignment(Qt.AlignmentFlag.AlignRight)
            text_edit.setFont(QFont("B Nazanin", 12))

            self.inputs[name] = text_edit

            self.scroll_layout.addWidget(label)
            self.scroll_layout.addWidget(text_edit)

        # افزودن منطقه اسکرول به لایه اصلی
        self.main_layout.addWidget(scroll_area)

        # ایجاد دکمه‌های ذخیره و لغو
        button_layout = QHBoxLayout()
        button_layout.setAlignment(Qt.AlignmentFlag.AlignCenter)

        save_button = QPushButton("ذخیره")
        save_button.setFixedHeight(40)
        save_button.setFixedWidth(120)
        save_button.setStyleSheet(self.button_style(self.colors['color1']))
        save_button.pressed.connect(lambda: save_button.setStyleSheet(self.button_pressed_style()))
        save_button.released.connect(lambda: save_button.setStyleSheet(self.button_style(self.colors['color1'])))
        save_button.clicked.connect(self.save_data)
        self.add_button_animation(save_button)

        cancel_button = QPushButton("لغو")
        cancel_button.setFixedHeight(40)
        cancel_button.setFixedWidth(120)
        cancel_button.setStyleSheet(self.button_style(self.colors['color2']))
        cancel_button.pressed.connect(lambda: cancel_button.setStyleSheet(self.button_pressed_style()))
        cancel_button.released.connect(lambda: cancel_button.setStyleSheet(self.button_style(self.colors['color2'])))
        cancel_button.clicked.connect(self.cancel_data)
        self.add_button_animation(cancel_button)

        button_layout.addWidget(cancel_button)
        button_layout.addWidget(save_button)

        self.main_layout.addLayout(button_layout)
        self.update_style()

    def button_style(self, color):
        return f"""
        QPushButton {{
            background-color: {color};
            color: #000000;
            border: none;
            border-radius: 20px;
            font-size: 16px;
        }}
        """

    def button_pressed_style(self):
        return f"""
        QPushButton {{
            background-color: #CCCCCC;
            color: #000000;
            border: none;
            border-radius: 20px;
            font-size: 16px;
        }}
        """

    def add_button_animation(self, button):
        # افزودن افکت هنگام هاور
        button.setStyleSheet(button.styleSheet() + """
        QPushButton:hover {
            background-color: #D3D3D3;
        }
        """)
        # افزودن انیمیشن کلیک با استفاده از QPropertyAnimation
        animation = QPropertyAnimation(button, b"geometry")
        animation.setDuration(100)

    def toggle_dark_mode(self, checked):
        self.is_dark_mode = checked
        self.colors = self.dark_colors if self.is_dark_mode else self.light_colors
        self.update_style()

    def update_style(self):
        # به‌روزرسانی استایل‌شیت‌های ویجت‌ها
        palette = self.palette()
        palette.setColor(QPalette.ColorRole.Window, QColor(self.colors['background']))
        palette.setColor(QPalette.ColorRole.WindowText, QColor(self.colors['text']))
        self.setPalette(palette)

        self.setStyleSheet(f"background-color: {self.colors['background']}; color: {self.colors['text']};")

        for name, text_edit in self.inputs.items():
            text_edit.setStyleSheet(f"""
            QTextEdit {{
                background-color: {self.colors['color4']};
                color: {self.colors['text']};
                border-radius: 5px;
            }}
            """)
            text_edit.setFont(QFont("B Nazanin", 12))
            text_edit.setAlignment(Qt.AlignmentFlag.AlignRight)

        # به‌روزرسانی لیبل‌ها
        labels = self.findChildren(QLabel)
        for label in labels:
            label.setStyleSheet(f"color: {self.colors['color3']};")
            label.setFont(QFont("B Nazanin", 14))
            label.setAlignment(Qt.AlignmentFlag.AlignRight)

        # به‌روزرسانی دکمه‌ها
        buttons = self.findChildren(QPushButton)
        for button in buttons:
            if button.text() == "ذخیره":
                color = self.colors['color1']
            elif button.text() == "لغو":
                color = self.colors['color2']
            else:
                color = self.colors['color1']
            button.setStyleSheet(self.button_style(color))
            button.setFont(QFont("B Nazanin", 14))
            self.add_button_animation(button)

    def save_data(self):
        # ذخیره داده‌ها (پیاده‌سازی اولیه)
        data = {name: field.toPlainText() for name, field in self.inputs.items()}
        print("اطلاعات ذخیره شد:", data)
        msg = QMessageBox()
        msg.setWindowTitle("ذخیره شد")
        msg.setText("اطلاعات با موفقیت ذخیره شد.")
        msg.exec()

    def cancel_data(self):
        # پاک کردن تمام فیلدهای ورودی
        for field in self.inputs.values():
            field.clear()
        msg = QMessageBox()
        msg.setWindowTitle("لغو شد")
        msg.setText("اطلاعات پاک شدند.")
        msg.exec()

def main():
    app = QApplication(sys.argv)
    app.setStyle("Fusion")

    window = BooklandApp()
    window.show()
    sys.exit(app.exec())

if __name__ == "__main__":
    main()