TypeError: Genereercode() heeft 0 positionele argumenten, maar er is 1 gegeven

proberen een programma te maken dat wanneer je op de knop drukt (code genereren) het een regel met gegevens uit een bestand extraheert en uitvoert naar de

TypeError: Genereercode() heeft 0 positionele argumenten, maar er is 1 gegeven

from tkinter import *
class Window(Frame): 
   def __init__(self, master = None):
       Frame.__init__(self, master)
       self.master = master
       self.init_window()
def init_window(self):
    self.master.title("COD:WWII Codes")
    self.pack(fill=BOTH, expand=1)
    codeButton = Button(self, text = "Generate Code", command = self.generatecode)
    codeButton.place(x=0, y=0)
def generatecode(self):
    f = open("C:/Programs/codes.txt", "r")
    t.insert(1.0. f.red())
root = Tk()
root.geometry("400x300")
app = Window(root)
root.mainloop()

Antwoord 1, autoriteit 100%

Als je een methode aanroept in een klasse (zoals in dit geval generatecode()), geeft Python automatisch selfdoor als het eerste argument voor de functie. Dus als je self.my_func()aanroept, is het meer alsof je MyClass.my_func(self)aanroept.

Dus wanneer Python je vertelt dat “generatecode() neemt 0 positionele argumenten maar 1 werd gegeven”, vertelt het je dat je methode is ingesteld om geen argumenten aan te nemen, maar het argument selfwordt nog steeds gebruikt doorgegeven wanneer de methode wordt aangeroepen, dus in feite ontvangt deze één argument.

Het toevoegen van selfaan uw methodedefinitie zou het probleem moeten oplossen.

def generatecode(self):
    pass  # Do stuff here

Als alternatief kunt u de methode statisch maken, in welk geval Python nietselfdoorgeeft als het eerste argument:

@staticmethod
def generatecode():
    pass  # Do stuff here

Other episodes