类型错误: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'