0

I have problem with my code in Python 3.8 (PyQT5). I want to make simple print after button will be clicked, but nothing happens.

from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QDialog
from PyQt5.uic.properties import QtCore

from FutureMeMailSender import Ui_FutureMeMail

class FutureMeMail(QtWidgets.QMainWindow, MailSender):
    def __init__(self):
        super(FutureMeMail, self).__init__()
        # Set up the user interface from Designer.

        self.ui.pushButtonSendMail.clicked.connect(self.clicked)
        self.receiver_mail = self.ui.lineEditMail.text()

        self.ui = Ui_FutureMeMail()
        self.ui.setupUi(self)

        self.show()

    def clicked(self):
        print("PushButtonAction -- Hello")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = QDialog()
    ui = Ui_FutureMeMail()
    ui.setupUi(window)
    window.show()
    sys.exit(app.exec_())
ps19
  • 1
  • 1
  • What is the `MailSender` used in the class inheritance? In your code there's no trace of it, maybe you meant `Ui_FutureMeMail`? – musicamante Jul 14 '20 at 13:45

2 Answers2

1

clicked is already an attribute of the object, if you name this function like this you'll shadow it. Use on_click for example instead.

from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QDialog
from PyQt5.uic.properties import QtCore

from FutureMeMailSender import Ui_FutureMeMail

class FutureMeMail(QtWidgets.QMainWindow, MailSender):
    def __init__(self):
        super(FutureMeMail, self).__init__()
        # Set up the user interface from Designer.

        self.ui.pushButtonSendMail.clicked.connect(self.on_click)
        self.receiver_mail = self.ui.lineEditMail.text()

        self.ui = Ui_FutureMeMail()
        self.ui.setupUi(self)

        self.show()

    def on_click(self):
        print("PushButtonAction -- Hello")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = QDialog()
    ui = Ui_FutureMeMail()
    ui.setupUi(window)
    window.show()
    sys.exit(app.exec_())
USERNAME GOES HERE
  • 692
  • 1
  • 15
  • 29
0

You need to create the self.ui object,

and then do:

self.ui.pushButtonSendMail.clicked.connect(self.clicked)

from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QDialog
from PyQt5.uic.properties import QtCore

from FutureMeMailSender import Ui_FutureMeMail

class FutureMeMail(QtWidgets.QMainWindow):     # ??? , MailSender):
    def __init__(self):
        super(FutureMeMail, self).__init__()
        # Set up the user interface from Designer.

        self.ui = Ui_FutureMeMail()                                   # +++
        self.ui.setupUi(self)                                         # +++

        self.ui.pushButtonSendMail.clicked.connect(self.clicked)
        self.receiver_mail = self.ui.lineEditMail.text()

# ---        self.ui = Ui_FutureMeMail()
# ---        self.ui.setupUi(self)

#        self.show()

    def clicked(self):
        print("PushButtonAction -- Hello")
        self.ui.lineEditMail.setText('Hello PyQt5')


if __name__ == "__main__":
    app = QApplication(sys.argv)
#    window = QDialog()
#    ui = Ui_FutureMeMail()
#    ui.setupUi(window)
#    window.show()

    w = FutureMeMail()                                  # +++
    w.show()                                            # +++        

    sys.exit(app.exec_())
S. Nick
  • 12,879
  • 8
  • 25
  • 33