Почему окно в PyQt5 не закрывается?

Каким образом можно исправить сообщение об ошибке 'AttributeError: 'SettingWindow' object has no attribute 'close' при запуске данного кода PyQt?
  • 29 июня 2024 г. 15:32
Ответы на вопрос 2
Окно в PyQt5 может не закрываться по нескольким причинам, одна из них может быть неправильная обработка события закрытия окна. 

Чтобы исправить сообщение об ошибке 'AttributeError: 'SettingWindow' object has no attribute 'close', необходимо убедиться, что метод `close` действительно существует в классе `SettingWindow`. Если метод `close` отсутствует, его нужно добавить в класс с помощью наследования от QWidget и переопределения метода `closeEvent`.

Пример кода, который позволит исправить данную ошибку:

```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton

class SettingWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        self.setGeometry(100, 100, 200, 200)

    def closeEvent(self, event):
        self.close()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    setting_window = SettingWindow()
    setting_window.show()
    sys.exit(app.exec_())
```

В этом коде метод `close` добавлен в класс `SettingWindow` через переопределение метода `closeEvent`. Теперь при вызове `self.close()` окно будет закрываться корректно без ошибок AttributeError.
Ну у твоего класса действительно есть только метод setupUi(), и нет метода close(). Неудивительно, что Питон этот метод тоже не находит. 
Я с Qt не знаком, поэтому поинтересуюсь: а MyMindow точно должно наследоваться от object? Может, от какого другого класса?

А вообще выглядит всё так, словно этому коду место в MainWindow.
Похожие вопросы