Не работает обработчик нажатия кнопки PyQt5
Не работает обработчик нажатия кнопки, хотя вроде делаю всё по примерам.
.setText() пробовал заменять на print(), в консоль ничего не выводило.
main.py:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from code.main_window_ui import Ui_Form
class MainWindow(QtWidgets.QMainWindow, Ui_Form):
def __init__(self, parent=None, *args, **kwargs):
super(MainWindow, self).__init__()
self.ui = Ui_Form()
self.ui.setupUi(self)
self.ui.pushButton.clicked.connect(self.btn_clicked)
def btn_clicked(self):
self.ui.label_3.setText("Работает...")
def main():
app = QtWidgets.QApplication(sys.argv)
app.setStyle('Fusion')
form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(form)
form.show()
sys.exit(app.exec_())
main()
main_window_ui.py:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(367, 362)
self.gridLayout = QtWidgets.QGridLayout(Form)
self.gridLayout.setObjectName("gridLayout")
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem, 4, 0, 1, 1)
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout.addItem(spacerItem1, 5, 1, 1, 1)
self.pushButton = QtWidgets.QPushButton(Form)
font = QtGui.QFont()
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
self.pushButton.setFont(font)
self.pushButton.setObjectName("pushButton")
self.gridLayout.addWidget(self.pushButton, 4, 1, 1, 1)
spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem2, 4, 2, 1, 1)
self.label_2 = QtWidgets.QLabel(Form)
font = QtGui.QFont()
font.setPointSize(18)
font.setUnderline(True)
self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.gridLayout.addWidget(self.label_2, 0, 0, 1, 3)
self.label_3 = QtWidgets.QLabel(Form)
font = QtGui.QFont()
font.setPointSize(11)
self.label_3.setFont(font)
self.label_3.setObjectName("label_3")
self.gridLayout.addWidget(self.label_3, 1, 0, 1, 3)
self.label = QtWidgets.QLabel(Form)
font = QtGui.QFont()
font.setPointSize(16)
self.label.setFont(font)
self.label.setLineWidth(1)
self.label.setTextFormat(QtCore.Qt.AutoText)
self.label.setObjectName("label")
self.gridLayout.addWidget(self.label, 2, 0, 1, 3)
self.lineEdit = QtWidgets.QLineEdit(Form)
self.lineEdit.setObjectName("lineEdit")
self.gridLayout.addWidget(self.lineEdit, 3, 0, 1, 3)
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Парсер для avito.ru"))
self.pushButton.setText(_translate("Form", "Начать"))
self.label_2.setText(_translate("Form", "Состояние парсера:"))
self.label_3.setText(_translate("Form", "Не активен"))
self.label.setText(_translate("Form", "Вставьте ссылку на страницу:"))
Ответы (1 шт):
Автор решения: Михаил Муругов
→ Ссылка
Во-первых, Вы объявили класс MainWindow, но не используете его. Вместо этого вы создаёте обычный QtWidgets.QWidget и создаёте ui для него. Поэтому:
def main():
app = QtWidgets.QApplication(sys.argv)
app.setStyle('Fusion')
form = MainWindow()
form.show()
sys.exit(app.exec_())
Во-вторых, я не вникал в код, но Ваш UI написан под обычный QWidget, а не под QMainWindow (для QMainWindow он работает некорректно), поэтому class MainWindow(QtWidgets.QWidget, Ui_Form):,