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 self
door 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 self
wordt nog steeds gebruikt doorgegeven wanneer de methode wordt aangeroepen, dus in feite ontvangt deze één argument.
Het toevoegen van self
aan 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 nietself
doorgeeft als het eerste argument:
@staticmethod
def generatecode():
pass # Do stuff here