【问题标题】:TypeError: schreiben_methode() missing 1 required positional argument: 'self' [duplicate]TypeError:schreiben_methode()缺少1个必需的位置参数:'self'[重复]
【发布时间】:2016-08-09 14:56:10
【问题描述】:

我是 Python 的新手,现在我遇到了第一个真正的问题: 我想写一个电子邮件程序,但我不能使用类来发送邮件。我看到了很多关于这些错误的答案,但没有一个真的对我有用。这是代码:

from tkinter import *

class Versenden(object):
    def testen(self):
        print("Funktioniert")


class Schreiben(object):


    def __init__(self, sender, smtpserver, smtppasswort):
        self.Absender = sender
        self.Smtpserver = smtpserver
        self.Smtppasswort = smtppasswort
        Schreiben.schreiben_methode()

    def schreiben_methode(self):
        root1 = Tk()
        versenden = Versenden()
        labelEmpfaenger = Label(root1, text="Empfaenger:")
        labelBetreff = Label(root1, text="Betreff:")
        empfaenger = Entry(root1)
        betreff = Entry(root1)
        inhalt = Text(root1, height=10, width=50)
        buttonSenden = Button(root1, text="senden", command=lambda: versenden.testen())

        labelEmpfaenger.grid(row=0, column=0)
        empfaenger.grid(row=0, column=1)
        labelBetreff.grid(row=1, column=0)
        betreff.grid(row=1, column=1)
        inhalt.grid(row=2, columnspan=2)
        buttonSenden.grid(row=3, columnspan=2)

        root1.mainloop()

root = Tk()
schreiben = Schreiben("a", "a", "a")

labelEmail = Label(root, text="Ihre Email-Addresse")
labelPasswort = Label(root, text="Ihr Passwort")
labelServer = Label(root, text="SMTP-Server")


email = Entry(root)
passwort = Entry(root)
server = Entry(root)

buttonWeiter = Button(root, text="Weiter", command=lambda: schreiben.schreiben_methode(email, server, passwort))


labelEmail.grid(row=0)
labelPasswort.grid(row=1)
email.grid(row=0, column=1)
passwort.grid(row=1, column=1)
labelServer.grid(row=2)
server.grid(row=2, column=1)
buttonWeiter.grid(row=3, columnspan=2)

root.mainloop()

PS:抱歉我的英语不好,我是一名德国学生,这就是为什么所有变量和类的名称都是用德语写的,希望这不是问题:)

【问题讨论】:

    标签: python python-3.x oop tkinter


    【解决方案1】:

    您应该在 self 上调用该方法,而不是直接从类中调用。

    def __init__(self, sender, smtpserver, smtppasswort):
        self.Absender = sender
        self.Smtpserver = smtpserver
        self.Smtppasswort = smtppasswort
        self.schreiben_methode()
    

    【讨论】:

    • 非常感谢,解决了我的问题 :)
    猜你喜欢
    • 2021-12-15
    • 2023-02-06
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 2013-07-06
    • 2022-01-05
    • 2017-03-28
    相关资源
    最近更新 更多