Як правильно організувати код

Як правильно організувати код
  • Python
  • PyQt

Вітання!
Пишу програму з GUI. Є головний клас, в ньому визначено метод який при ініціалізації будує інтерфейс. У цьому інтерфейсі (частина його) є одна вкладка, а так само 2 кнопки - додати і видалити вкладку. наповнення вкладки реалізовано в іншому методі, так як наповнення однакове.
Потрібно щоб було так: при відкритті програми повинна з'явитися одна вкладка, кнопка додати повинна бути активною, а кнопка видалити не активні, так як останню вкладку закрити не можна. після додавання вкладки кнопкою "Додати" кнопка "Видалити" стає активною (до моменту поки не залишиться всього 1 вкладка).
Як у мене йде в коді (основні шматки):
Додавання вкладки, де відбувається виклик методу додавання

Далі нижче йде додавання кнопок:

Далі йде метод, який додає вкладку з вмістом (вміст опустив, воно не важливо, додається коректно):

Ну і видалення вкладки:

При такому розкладі я отримую звичайно ж помилку: "AttributeError: 'mainForm' object has no attribute 'buttonDelProject'"
Воно і зрозуміло, так як у мене йде виклик додавання вкладки, а там першим рядком йде що потрібно зробити кнопку "Видалити" активної, коли за кодом кнопки ще навіть не існує.
Ось у мене питання: як правильно оформити код щоб нормально реалізовувалося вищеописане?
Варіанти в мене такі:
- поміняти місцями додавання кнопок і додавання вкладки, але тут доведеться трохи мудрувати, так як порядок шарів вже буде не той
- спустити виклик self.addProjectTab () нижче створення кнопок + додати умова як в методі delProjectTab на визначення кількості вкладок і в залежності від цього активувати або деактивувати кнопку "Видалити"

Підкажіть правильний спосіб.

UPD:
ще варіант залишити все як є, але в "addProjectTab" обернути в try-except "self.buttonDelProject.setEnabled (True)"

Схожі статті