TypeError:'in <string>'需要字符串作为左操作数,而不是QString

时间:2015-07-21 21:51:32

标签: python pyqt smtplib

我正在尝试编写一个简单的应用程序来发送(并可能接收)来自我的Gmail帐户的电子邮件。我设法在我的源代码中硬编码我的帐户信息时这样做,但现在我想在GUI字段中输入它们并从那里读取信息。这是代码:

DateTime arrival = DateTime.Now;
CultureInfo invariant = CultureInfo.InvariantCulture;
string dateString = arrival.ToString("MM/dd/yyyy", invariant);

当我运行它时,我得到这个长屁股错误:

import sys
import smtplib
from PyQt4 import QtCore, QtGui
from Notifier_Main import Ui_Notifier_Main_GUI

class MainGUI(QtGui.QWidget, Ui_Notifier_Main_GUI):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.setupUi(self)
        self.sendButton.clicked.connect(self.send)

    def send(self):
        fromaddr = self.senderEmailLineEdit.text()
        toaddrs  = self.receiverEmailLineEdit.text()
        msg = self.msgTextEdit.toPlainText()
        username = self.senderEmailLineEdit.text()
        server = smtplib.SMTP("smtp.gmail.com:587")
        server.starttls()
        server.login(username, 'password')
        server.sendmail(fromaddr, toaddrs, msg)
        server.quit()

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    main_gui = MainGUI()
    main_gui.show()
sys.exit(app.exec_())

我尝试使用Google搜索该类型错误,并找到了一些关于某些spyderlib的链接,但由于我对这一切都很新,我无法弄清楚该怎么做。

3 个答案:

答案 0 :(得分:3)

对具有文本的Qt元素的大多数请求将返回QStrings,即Qt使用的简单字符串容器。大多数其他库都会期望常规的python字符串,因此使用str()进行强制转换可能是必要的。全部:

from PIL import Image

是QString对象。

答案 1 :(得分:0)

尝试使用内置函数str()将变量转换为字符串

答案 2 :(得分:0)

只需使用此:

fromaddr = str(self.senderEmailLineEdit.text())
toaddrs  = str(self.receiverEmailLineEdit.text())
msg = str(self.msgTextEdit.toPlainText())
username = str(self.senderEmailLineEdit.text())