добавь смену темной темы на черную а также сделай его с привлекательным дизайном

from PyQt5.QtWidgets import (
    QWidget, QLabel, QPushButton, QVBoxLayout, QHBoxLayout,
    QLineEdit, QCheckBox, QSpinBox, QTabWidget, QComboBox, QMessageBox
)
from PyQt5.QtCore import Qt, QTimer
from password_manager import PasswordManager
from password_generator import PasswordGenerator
from password_checker import PasswordChecker

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('Password Manager')
        self.setGeometry(100, 100, 800, 450)
        self.password_manager = PasswordManager()
        self.init_ui()

    def init_ui(self):
        self.tabs = QTabWidget()
        self.tabs.addTab(self.generate_tab(), 'Generate Password')
        self.tabs.addTab(self.manage_tab(), 'Manage Passwords')
        self.tabs.addTab(self.check_tab(), 'Check Password')
        main_layout = QVBoxLayout()
        main_layout.addWidget(self.tabs)
        self.setLayout(main_layout)

    def generate_tab(self):
        tab = QWidget()
        layout = QVBoxLayout()

        length_layout = QHBoxLayout()
        length_label = QLabel('Password Length:')
        self.length_spin = QSpinBox()
        self.length_spin.setRange(6, 128)
        self.length_spin.setValue(12)
        length_layout.addWidget(length_label)
        length_layout.addWidget(self.length_spin)

        options_layout = QHBoxLayout()
        self.uppercase_cb = QCheckBox('Include Uppercase')
        self.lowercase_cb = QCheckBox('Include Lowercase')
        self.digits_cb = QCheckBox('Include Digits')
        self.symbols_cb = QCheckBox('Include Symbols')
        self.exclude_ambiguous_cb = QCheckBox('Exclude Ambiguous')
        self.uppercase_cb.click()
        self.lowercase_cb.click()
        self.digits_cb.click()
        self.symbols_cb.click()
        options_layout.addWidget(self.uppercase_cb)
        options_layout.addWidget(self.lowercase_cb)
        options_layout.addWidget(self.digits_cb)
        options_layout.addWidget(self.symbols_cb)
        options_layout.addWidget(self.exclude_ambiguous_cb)

        self.password_display = QLineEdit()
        self.password_display.setEchoMode(QLineEdit.Password)
        self.password_display.setReadOnly(True)
        self.password_display.installEventFilter(self)

        generate_btn = QPushButton('Generate')
        generate_btn.clicked.connect(self.generate_password)
        copy_btn = QPushButton('Copy to Clipboard')
        copy_btn.clicked.connect(self.copy_password)

        btn_layout = QHBoxLayout()
        btn_layout.addWidget(generate_btn)
        btn_layout.addWidget(copy_btn)

        layout.addLayout(length_layout)
        layout.addLayout(options_layout)
        layout.addWidget(self.password_display)
        layout.addLayout(btn_layout)
        tab.setLayout(layout)
        return tab

    def generate_password(self):
        generator = PasswordGenerator()
        length = self.length_spin.value()
        options = {
            'uppercase': self.uppercase_cb.isChecked(),
            'lowercase': self.lowercase_cb.isChecked(),
            'digits': self.digits_cb.isChecked(),
            'symbols': self.symbols_cb.isChecked(),
            'exclude_ambiguous': self.exclude_ambiguous_cb.isChecked()
        }
        password = generator.generate(length, **options)
        self.password_display.setText(password)

    def copy_password(self):
        password = self.password_display.text()
        if password:
            from pyperclip import copy
            copy(password)
            QTimer.singleShot(5000, self.clear_clipboard)

    def clear_clipboard(self):
        from pyperclip import copy
        copy('')

    def manage_tab(self):
        tab = QWidget()
        # Implement password management UI components here
        return tab

    def check_tab(self):
        tab = QWidget()
        layout = QVBoxLayout()
        self.check_input = QLineEdit()
        self.check_input.setEchoMode(QLineEdit.Password)
        self.check_input.installEventFilter(self)
        check_btn = QPushButton('Check Password')
        check_btn.clicked.connect(self.check_password)

        self.check_result = QLabel('')
        copy_btn = QPushButton('Copy to Clipboard')
        copy_btn.clicked.connect(self.copy_checked_password)

        layout.addWidget(self.check_input)
        layout.addWidget(check_btn)
        layout.addWidget(self.check_result)
        layout.addWidget(copy_btn)
        tab.setLayout(layout)
        return tab

    def check_password(self):
        password = self.check_input.text()
        if password:
            checker = PasswordChecker()
            strength = checker.check_strength(password)
            leaked = checker.check_leak_async(password)
            self.check_result.setText(f'Strength: {strength}\nLeaked: {leaked}')

    def copy_checked_password(self):
        password = self.check_input.text()
        if password:
            from pyperclip import copy
            copy(password)
            QTimer.singleShot(5000, self.clear_clipboard)

    def eventFilter(self, source, event):
        if event.type() == event.Enter and isinstance(source, QLineEdit):
            source.setEchoMode(QLineEdit.Normal)
        elif event.type() == event.Leave and isinstance(source, QLineEdit):
            source.setEchoMode(QLineEdit.Password)
        return super().eventFilter(source, event)