Как наследовать себя от родительского класса MainWindow в pyqt5 - PullRequest
0 голосов
/ 07 ноября 2019

Мой Ui_MainWindow класс выглядит следующим образом:

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(271, 429)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")

        self.lbl_adres = QtWidgets.QLabel(self.centralwidget)
        self.lbl_adres.setGeometry(QtCore.QRect(30, 20, 47, 13))
        self.lbl_adres.setObjectName("lbl_adres")
...

Я создал новый класс Connection ниже родительского класса и хочу получить доступ к lbl_adres:

class Connection(Ui_MainWindow):
    def __init__(self, parent=None):
        super().__init__()

        #I Want to access parent class element here
        print(self.lbl_adres.text())
...

Однако, это наследование действительно работает вообще, и я получаю следующую ошибку:

AttributeError: 'Connection' object has no attribute 'lbl_adres'

Я понимаю, что класс Connection не может ссылаться на элементы UI_MainWindow, потому что я пишу его неправильно. Я просто хочу изменить что-то в будущем в родительском классе, например текст из класса Connection. Как решить эту проблему?

1 Ответ

0 голосов
/ 07 ноября 2019

Вы уверены, что хотите наследство здесь? (nb: наследование означает отношение «есть», а не «имеет» отношение). Учитывая заголовок вашего вопроса, кажется, что вы еще не понимаете ОО (подсказка: «наследует себя от родительских классов» не имеет никакого смысла - self - это объект, для которого был вызван метод).

Если да, то ваша проблема связана с попыткой получить доступ к атрибуту, который еще не создан - это Ui_MainWindow.setupUI(), который создает этот атрибут, поэтому его не существует до вызова этого метода.

Иначе, пожалуйста, объясните более четко, что вы действительно пытаетесь сделать (я имею в виду: объясните проблему, а не то, что вы думаете, решение).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...