Note that there are some explanatory texts on larger screens.

plurals
  1. POpython Qt4 How to bind action on button click
    text
    copied!<p>I'm trying make my first python app. I want make simple email sender form. In qt designer create a dialog.ui, then generate dialog.py from dialog.ui and write there function</p> <pre><code>def SendEmail(self,efrom,eto,esubj,ebody): msg = MIMEText( ebody.encode('UTF-8'),'html', 'UTF-8') msg['Subject'] = esubj msg['From'] = efrom msg['To'] = eto s = smtplib.SMTP() s.connect("mail.driversoft.net", 25) s.login("info@mysite.net", "1234567") s.sendmail(efrom, [eto], msg.as_string()) s.quit() </code></pre> <p>and try connect to the slot</p> <pre><code>QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL("clicked()"), self.SendEmail("info@mysite.net", "test@mysite.net", "subject", "bodytext")) </code></pre> <p>when I try start this app, I don't see a form, on my email revive message, and in console</p> <pre><code>Traceback (most recent call last): File "C:\Documents and Settings\a.ivanov\My Documents\Aptana Studio Workspace\test1\src\wxtest.py", line 61, in &lt;module&gt; ui.setupUi(Dialog) File "C:\Documents and Settings\a.ivanov\My Documents\Aptana Studio Workspace\test1\src\wxtest.py", line 33, in setupUi QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL("clicked()"), self.SendEmail("info@mysqite.net", "test@mysite.net", "subject", "bodytext")) TypeError: arguments did not match any overloaded call: QObject.connect(QObject, SIGNAL(), QObject, SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 3 has unexpected type 'NoneType' QObject.connect(QObject, SIGNAL(), callable, Qt.ConnectionType=Qt.AutoConnection): argument 3 has unexpected type 'NoneType' QObject.connect(QObject, SIGNAL(), SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 2 has unexpected type 'bytes' </code></pre> <p>How can I do a form i wich I wrote subject and text then press Send button and get message by email? Thanks! </p> <p>full code</p> <pre><code>from PyQt4 import QtCore, QtGui import smtplib from email.mime.text import MIMEText class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(400, 330) self.textEdit = QtGui.QTextEdit(Dialog) self.textEdit.setGeometry(QtCore.QRect(10, 70, 381, 221)) self.textEdit.setObjectName("textEdit") self.subjEdit = QtGui.QLineEdit(Dialog) self.subjEdit.setGeometry(QtCore.QRect(10, 30, 371, 20)) self.subjEdit.setObjectName("subjEdit") self.pushButton = QtGui.QPushButton(Dialog) self.pushButton.setGeometry(QtCore.QRect(100, 300, 75, 23)) self.pushButton.setObjectName("pushButton") self.pushButton_2 = QtGui.QPushButton(Dialog) self.pushButton_2.setGeometry(QtCore.QRect(210, 300, 75, 23)) self.pushButton_2.setObjectName("pushButton_2") self.label = QtGui.QLabel(Dialog) self.label.setGeometry(QtCore.QRect(10, 10, 46, 13)) self.label.setObjectName("label") self.label_2 = QtGui.QLabel(Dialog) self.label_2.setGeometry(QtCore.QRect(11, 53, 46, 13)) self.label_2.setObjectName("label_2") self.retranslateUi(Dialog) QtCore.QObject.connect(self.pushButton_2, QtCore.SIGNAL("clicked()"), Dialog.close) QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL("clicked()"), self.SendEmail("info@mysite.net", "test@mysite.net", "subject", "bodytext")) QtCore.QMetaObject.connectSlotsByName(Dialog) #this is my function def SendEmail(self,efrom,eto,esubj,ebody): msg = MIMEText( ebody.encode('UTF-8'),'html', 'UTF-8') msg['Subject'] = esubj msg['From'] = efrom msg['To'] = eto s = smtplib.SMTP() s.connect("mail.driversoft.net", 25) s.login("info@mysite.net", "1234567") s.sendmail(efrom, [eto], msg.as_string()) s.quit() #print("done") def retranslateUi(self, Dialog): Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton.setText(QtGui.QApplication.translate("Dialog", "Send", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton_2.setText(QtGui.QApplication.translate("Dialog", "Close", None, QtGui.QApplication.UnicodeUTF8)) self.label.setText(QtGui.QApplication.translate("Dialog", "Subject", None, QtGui.QApplication.UnicodeUTF8)) self.label_2.setText(QtGui.QApplication.translate("Dialog", "Email text", None, QtGui.QApplication.UnicodeUTF8)) if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) Dialog = QtGui.QDialog() ui = Ui_Dialog() ui.setupUi(Dialog) Dialog.show() sys.exit(app.exec_()) </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload