PyQt4 如何从QTextEdit获取文本及无法创建消息框
我正在用Python制作一个邮件客户端。现在我遇到了以下错误:
def egonder(self):
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
usrnam=self.ad.text()
passwds=self.sifre.text()
if usrnam=="" or passwds=="":
QtGui.QMessageBox.warning("Fill every blank.")
else:
server.login(usrnam,passwds)
self.durum.setText("Logging in...")
mytext=""
self.mesaj.setPlainText(mytext)
msg = self.konu.text(),"\n",mytext
server.sendmail(self.kimden.text(), self.kime.text(), msg)
self.durum.setText("Email sent.")
它给了我以下错误:
File "eposta.py", line 105, in egonder
server.sendmail(self.kimden.text(), self.kime.text(), msg)
File "/usr/lib/python3.4/smtplib.py", line 793, in sendmail
(code, resp) = self.data(msg)
File "/usr/lib/python3.4/smtplib.py", line 532, in data
q = _quote_periods(msg)
File "/usr/lib/python3.4/smtplib.py", line 168, in _quote_periods
return re.sub(br'(?m)^\.', b'..', bindata)
File "/usr/lib/python3.4/re.py", line 175, in sub
return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or buffer
当我尝试让消息框显示时,它又给了我一个错误:
QtGui.QMessageBox.warning("Fill every blank.")
TypeError: arguments did not match any overloaded call:
QMessageBox.warning(QWidget, str, str, QMessageBox.StandardButtons buttons=QMessageBox.Ok, QMessageBox.StandardButton defaultButton=QMessageBox.NoButton): argument 1 has unexpected type 'str'
QMessageBox.warning(QWidget, str, str, int, int, int button2=0): argument 1 has unexpected type 'str'
QMessageBox.warning(QWidget, str, str, str, str button1Text='', str button2Text='', int defaultButtonNumber=0, int escapeButtonNumber=-1): argument 1 has unexpected type 'str'
谢谢你
2 个回答
-1
好的,下面是代码:
QtGui.QMessageBox.warning(None, "Invalid input", "Fill every blank.")
1
错误 1
你写的这一行代码:msg = self.konu.text(),"\n",mytext
这段代码实际上是在创建一个字符串列表。如果你用print
打印出来,你会看到类似这样的内容:
('Something', '\n', 'Something More')
但是,SMTP.sendmail需要的是一个字符串作为消息。所以你可以试试这样:
msg = "{0}\n{1}".format(self.konu.text(), mytext)
请查看关于SMTP.sendmail和string.format的文档
错误 2
你没有给QMessageBox传递所有必需的参数。至少需要提供消息框的父级、标题和消息。所以如果没有父级的话:
QtGui.QMessageBox.warning(None, "Invalid input", "Fill every blank.")
请查看文档