Концепцию понимаю. Не понимаю как правильно использовать это.
У меня PyQt5, Python3, Ubuntu.
Я с помощью QT Designer нарисовал MainWindow с кнопкой и StatusBat.
Сгенерил код на python и добавил в него метод msgBtnPushed(self), который должен вызываться при нажатии на кнопку.
#!/usr/bin/python3 # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'win_mainwnd_03.ui' # # Created by: PyQt5 UI code generator 5.2.1 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(538, 364) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(100, 110, 351, 101)) self.pushButton.setObjectName("pushButton") MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "Исследуем слоты и коннекты")) self.pushButton.setText(_translate("MainWindow", "Нажми меня")) def msgBtnPushed(self): self.statusbar.showMessage("Ух! Нажали!") if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
Теперь я должен определить сигнал и указать слот, который должен этот сигнал обрабатывать.
Как указать сигнал, который будет генериться при нажатии на кнопку self.pushButton?
Где и как нужно указать слот, который при поступлении сигнала вызовет метод msgBtnPushed?
И еще один мелкий вопрос. Я использую Ubuntu и преобразую файл формы в код python следующей командой:
pyuic5 -x win_mainwnd_03.ui -o win_mainwnd_03e.py chmod +x win_mainwnd_03e.py
Я ее добавляю либо руками либо командой
sed -i '1s/^/#!\/usr\/bin\/python3\n/' ./win_mainwnd_03e.py
Почему автоматически не вставляется строка вызова интепретатора?
Может я что то делаю не так?