类型错误:get() 缺少 1 个必需的位置参数:'index1'

Posted

技术标签:

【中文标题】类型错误:get() 缺少 1 个必需的位置参数:\'index1\'【英文标题】:TypeError: get() missing 1 required positional argument: 'index1'类型错误:get() 缺少 1 个必需的位置参数:'index1' 【发布时间】:2020-12-11 00:24:44 【问题描述】:

我正在尝试制作一个超级简单的电子邮件客户端。这将使我能够将电子邮件从学校发送到我的家用计算机,因为它们的 Outlook 和 gmail 已被阻止。当我尝试运行它时,它显示: TypeError: get() missing 1 required positional argument: '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,width=20,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,height=1, command=Send)
button1.pack()

window.mainloop()

【问题讨论】:

【参考方案1】:

在您的send() 函数上,您需要添加get() 参数。

dialog = textbox1.get("1.0",'end-1c')
subject = textbox2.get("1.0",'end-1c')

第一部分,"1.0" 表示应该从第一行字符零读取输入。

end-1c 分为两部分:

    end:读到正文结束。 1c:从末尾开始删除 1 个字符。

它会删除最后一个字符以删除最后一个 \n,这样您的电子邮件就不会以多余的行结尾。

【讨论】:

【参考方案2】:

请改用textbox1.get("1.0",'end-1c')。这应该会给你文本框内的文本。

解释可以在这里找到:How to get the input from the Tkinter Text Widget?

【讨论】:

【参考方案3】:

发生错误是因为.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,width=20,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,height=1, command=Send)
button1.pack()

window.mainloop()

【讨论】:

以上是关于类型错误:get() 缺少 1 个必需的位置参数:'index1'的主要内容,如果未能解决你的问题,请参考以下文章

类型错误:parse() 缺少 1 个必需的位置参数:'stream'

类型错误:预测()缺少 1 个必需的位置参数:'params'

类型错误:new() 缺少 1 个必需的位置参数:'y'

类型错误:预测()缺少 1 个必需的位置参数:'y_train'

类型错误:攻击()缺少 1 个必需的位置参数:“自我”

类型错误:<lambda>() 缺少 1 个必需的位置参数:'w'