微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

TypeError:get缺少1个必需的位置参数:'index1'

如何解决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分为两部分:

  1. end:阅读直到文本末尾。
  2. 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 举报,一经查实,本站将立刻删除。