【问题标题】: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()

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    在您的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,这样您的电子邮件就不会以多余的行结尾。

    【讨论】:

      【解决方案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()
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-11
          • 1970-01-01
          • 2018-09-12
          • 2021-08-05
          • 2021-07-06
          • 2021-08-05
          • 2017-07-23
          相关资源
          最近更新 更多