DanielDan0
@DanielDan0
Начинающий программист на Python и не только.

Как сделать обработчик сигналов в PyQt5?

У меня такая проблема - обработчики сигналов не правильно работают, выводят ошибку.
Код:
class app(Ui_Form):
    def __init__(self,parent):
        Ui_Form.__init__(self)
        self._connectSlots()
    def _connectSlots(self):
        Ui_Form.pushButton.clicked.connect(self.lineedit, self._slotAddClicked)
    def _slotAddClicked(self):
        text = self.lineedit.text()
        if len(text):
            lvi = QTableViewItem(self.tableview)
            lvi.setText(0,text)
            self.lineedit.clear()

Код UI:
from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(400, 300)
        self.tableView = QtWidgets.QTableView(Form)
        self.tableView.setGeometry(QtCore.QRect(10, 10, 381, 251))
        self.tableView.setObjectName("tableView")
        self.lineEdit = QtWidgets.QLineEdit(Form)
        self.lineEdit.setGeometry(QtCore.QRect(10, 270, 301, 20))
        self.lineEdit.setObjectName("lineEdit")
        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(320, 270, 75, 23))
        self.pushButton.setObjectName("pushButton")

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.lineEdit.setText(_translate("Form", "USER */%/# +n/-n"))
        self.pushButton.setText(_translate("Form", "OK"))

Выводит ошибку AttributeError: type object 'Ui_Form' has no attribute 'pushButton'.
Пожалуйста, скажите как сделать правильно? Заранее благодарен.
  • Вопрос задан
  • 717 просмотров
Решения вопроса 1
mFoxRU
@mFoxRU
pushButton создаётся внутри метода setupUi. Нужно вызвать его в конструкторе класса app перед вызовом self._connectSlots()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы