Обращение к элементам формы родительского класса
Qt Designer генерирует при изменении формы новый файл, затирая старые изменения добавленные в ручную поэтому возникает потребность все изменения вынести в отдельный файл. В файле создаю класс формы, унаследовав старую, но при попытке обратиться к ним во время компиляции появляется ошибка (данный атрибут не найден).
# parent class
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(550, 366)
self.btn_connect = QtWidgets.QPushButton(self.centralwidget)
self.btn_connect.setGeometry(QtCore.QRect(440, 250, 101, 41))
...
# child class
class Terminal(Ui_MainWindow):
def setupUii(self, MainWindow):
MainWindow.setObjectName("MainWindow2")
def add_function(self):
Ui_MainWindow.btn_connect.clicked.connect(self.start) # error AttributeError: type object
#'Ui_MainWindow' has no attribute 'btn_connect'
Как обращаться к элементам к элементам формы из дочернего класса?
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Попробуйте:
from PyQt5 import QtWidgets, QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow
# parent class
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(550, 366)
self.centralwidget = QtWidgets.QWidget(MainWindow)
MainWindow.setCentralWidget(self.centralwidget)
self.btn_connect = QtWidgets.QPushButton(self.centralwidget)
self.btn_connect.setGeometry(QtCore.QRect(440, 250, 101, 41))
# child class
class Terminal(Ui_MainWindow):
def setupUi(self, MainWindow):
super().setupUi(MainWindow)
MainWindow.setObjectName("MainWindow2")
def add_function(self):
self.btn_connect.clicked.connect(self.start)
def start(self):
print('!!!!')
class MainWindow(QMainWindow, Terminal):
def __init__(self):
super().__init__()
self.setupUi(self)
self.add_function()
if __name__ == '__main__':
app = QApplication([])
mw = MainWindow()
mw.show()
app.exec()