缺少1个必要的位置参数:'self'

 -鹊巢鸠占 发布于 2023-02-07 18:05

这是我的代码:

class Email_Stuff():
    def __init__(self):
        self.emailaddr = None
        self.recipaddr = None
        self.EmailUser = None
        self.EmailPass = None
    def From_Email(self):
        self.emailaddr = turtle.textinput("Your Email", "What is your email address?")
    def To_Email(self):
        self.recipaddr = turtle.textinput("Client Email", "What is your client's email address?")
    def Email_Username(self):
        self.EmailUser = turtle.textinput("Your Email Username", "What is your email username?")
    def Email_Password(self):
        self.EmailPass = turtle.textinput("Your Email Password", "What is your email Password?")
    def Send_Email(self):
        print (self.emailaddr) #these are here for me to see if it is the right input
        print(self.recipaddr)
        print(self.EmailUser)
        print(self.EmailPass)
        import smtplib
        server = smtplib.SMTP('smtp.gmail.com', 587)
        server.login((self.EmailUser),(self.EmailPass))
        self.message = "Python Test Email"
        server.sendmail(self.emailaddr,self.recipaddr,self.message)

我有一个连接到Email_Stuff.From_Email的按钮和一个连接到Email_Stuff.From_Email等的按钮......

每当我按下按钮打开龟窗时,它就会给我这个错误:

Exception in Tkinter callback
Traceback (most recent call last):
Fileline "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/tkinter/__init__.py", 1475, in __call__
return self.func(*args)
TypeError: From_Email() missing 1 required positional argument: 'self'

但是如果我从From_Email和To_Email等中取出自我.

class Email_Stuff():
    def __init__(self):
        self.emailaddr = None
        self.recipaddr = None
        self.EmailUser = None
        self.EmailPass = None
    def From_Email():
        self.emailaddr = turtle.textinput("Your Email", "What is your email address?")
    def To_Email():
        self.recipaddr = turtle.textinput("Client Email", "What is your client's email address?")
    def Email_Username():
        self.EmailUser = turtle.textinput("Your Email Username", "What is your email username?")
    def Email_Password():
        self.EmailPass = turtle.textinput("Your Email Password", "What is your email Password?")
    def Send_Email(self):
        print (self.emailaddr) #these are here for me to see if it is the right input
        print(self.recipaddr)
        print(self.EmailUser)
        print(self.EmailPass)
        import smtplib
        server = smtplib.SMTP('smtp.gmail.com', 587)
        server.login((self.EmailUser),(self.EmailPass))
        self.message = "Python Test Email"
        server.sendmail(self.emailaddr,self.recipaddr,self.message)

我收到此错误消息(这不是全部):

    self.emailaddr = turtle.textinput("Your Email", "What is your email address?")
    NameError: global name 'self' is not defined

这是按钮代码:

Email_Button = Button(root, text='Enter Your Email', command=Email_Stuff.From_Email)
Email_Button.pack()
Email_Button.place(x=250,y=210)

请帮忙!对不起,我很抱歉

1 个回答
  • 我认为你遇到了以下问题.如果你参加以下课程F:

    class F():
         def foo(self):
             return 1
    

    并试着打电话F.foo(),你应该得到一个类似于你所看到的错误.

    >>> F.foo()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: unbound method foo() must be called with F instance as first argument (got nothing instead)
    

    你需要做的是调用foo()以下对象F:

    >>> f=F()
    >>> f.foo()
    1
    

    我有一个连接到Email_Stuff.From_Email的按钮和一个连接到Email_Stuff.From_Email等的按钮......

    您可能需要实例化一个对象Email_Stuff,然后调用yourobject.From_Email().(如果你的类Email_Stuff还包含GUI按钮处理程序的东西,你可以self.From_Email()从按钮处理程序调用)

    2023-02-07 18:08 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有