如何解决TypeError:get缺少1个必需的位置参数:'index1'
我正在尝试制作一个超级简单的电子邮件客户端。这将使我能够将学校发送的电子邮件发送到我的家用计算机,因为它们的Outlook和Gmail被阻止了。当我尝试运行它时,它说:TypeError:get()缺少1个必需的位置参数:'index1'为了安全起见,我用asterix替换了我的电子邮件和密码。在此先感谢:)
这里是我的代码:
from tkinter import *
import tkinter as tk
from email.message import EmailMessage
import smtplib
window=Tk()
window.title('Email Client')
window.geometry('200x275')
textBox2=Text(window,width=20,height=10,bg='light grey')
label2=Label(window,text='Message')
textBox1=Text(window,height=1,bg='light grey')
label1=Label(window,text='Subject')
def email_alert(subject,body,to):
msg = EmailMessage()
msg.set_content(body)
msg['subject'] = subject
msg['to'] = to
user = "*******************"
msg['from'] = user
password = "*************"
server = smtplib.SMTP("smtp.gmail.com",587)
server.starttls()
server.login(user,password)
server.send_message(msg)
server.quit()
if __name__ == '__main__':
def Send():
dialog = textBox1.get()
subject = textBox2.get()
email_alert(subject,dialog,"******************")
label1.pack()
textBox1.pack()
label2.pack()
textBox2.pack()
button1=Button(window,text='Send Email',width=10,command=Send)
button1.pack()
window.mainloop()
解决方法
在send()
函数上,您需要添加get()
参数。
dialog = textbox1.get("1.0",'end-1c')
subject = textbox2.get("1.0",'end-1c')
第一部分"1.0"
表示应从第一行字符零读取输入。
end-1c
分为两部分:
-
end
:阅读直到文本末尾。 -
1c
:从末尾删除1个字符。
它将删除最后一个字符以删除最后一个\n
,因此您的电子邮件不会以多余的行结尾。
改为使用void main() {
setupLocator();
// runApp(MyApp());
runApp(
DevicePreview(
enabled: true,builder: (context) => MyApp(),),);
}
class MyApp extends StatelessWidget {
final GlobalKey<NavigatorState> navigatorKey =
new GlobalKey<NavigatorState>();
@override
Widget build(BuildContext context) {
return StreamProvider<User>(
initialData: User.initial(),create: (BuildContext context) => locator<AuthService>().user,child: MaterialApp(
locale: DevicePreview.of(context).locale,builder: (context,widget) => Navigator(
onGenerateRoute: (settings) => MaterialPageRoute(
builder: (context) => DialogManager(
child: widget,// builder: DevicePreview.appBuilder,<---- CAUSE OF ERROR IS IT'S ABSENCE
title: 'Fitness Diet',theme: ThemeData(),initialRoute: 'splash',navigatorKey: navigatorKey,onGenerateRoute: Router.generateRoute,);
}
}
。这样可以在文本框中输入文字。
可以在这里找到说明:How to get the input from the Tkinter Text Widget?
,发生错误是因为.get
方法需要至少1个参数。
要获取内容,您必须使用.get("1.0",END)
尝试
from tkinter import *
import tkinter as tk
from email.message import EmailMessage
import smtplib
window=Tk()
window.title('Email Client')
window.geometry('200x275')
textbox2=Text(window,width=20,height=10,bg='light grey')
label2=Label(window,text='Message')
textbox1=Text(window,height=1,bg='light grey')
label1=Label(window,text='Subject')
def email_alert(subject,body,to):
msg = EmailMessage()
msg.set_content(body)
msg['subject'] = subject
msg['to'] = to
user = "*******************"
msg['from'] = user
password = "*************"
server = smtplib.SMTP("smtp.gmail.com",587)
server.starttls()
server.login(user,password)
server.send_message(msg)
server.quit()
if __name__ == '__main__':
def Send():
dialog = textbox1.get("1.0",END)
subject = textbox2.get("1.0",END)
email_alert(subject,dialog,"******************")
label1.pack()
textbox1.pack()
label2.pack()
textbox2.pack()
button1=Button(window,text='Send Email',width=10,command=Send)
button1.pack()
window.mainloop()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。