TypeError: generatecode() prende 0 argomenti posizionali, ma 1 è stato dato

cercando di creare un programma che quando si preme il pulsante(generare il codice) estrae una riga di dati da un file e uscite in

TypeError: generatecode() prende 0 argomenti posizionali, ma 1 è stato dato

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()

 

One Reply
  1. 8

    Quando si chiama un metodo di una classe (ad esempio generatecode() in questo caso), Python passa automaticamente self come primo argomento della funzione. Così, quando si chiama self.my_func(), è più come chiamare MyClass.my_func(self).

    Così, quando Python ti dice “generatecode() prende 0 argomenti posizionali, ma 1 è stato dato”, che indica che il vostro metodo è impostato per prendere senza argomenti, ma il self argomento è ancora passata quando viene chiamato il metodo, quindi, in realtà, è la ricezione di un argomento.

    Aggiunta di self per il metodo di definizione, dovrebbe risolvere il problema.

    def generatecode(self):
        pass  # Do stuff here

    In alternativa, è possibile rendere il metodo statico, nel qual caso Python non passare self come primo argomento:

    @staticmethod
    def generatecode():
        pass  # Do stuff here
    • vi ringrazio tanto. questo ha funzionato, ora quando mi ha colpito di generare il codice si dice t.inserire non è definito? ho postato il nuovo codice.
    • Destra. Non c’è nessuna variabile t definito ovunque (anche, read è errato su quella linea, e sembra che si dispone di un punto invece della virgola, così sarà anche causare problemi).
    • im solo cercando di uscita di una singola riga dal file di testo in una casella di testo utilizzando la generatecode pulsante, ma im nuovo a python e cercando di guardare in su, ma tutto quello che ho provato non funziona.
    • Avrete bisogno di fare riferimento a quella casella di testo nel vostro metodo. Non vedo dove ogni casella di testo è definito nel codice che si sta mostrando.
    • In ogni caso, forse è meglio aprire una nuova domanda di come questo si è risolto. E cambiare la tua domanda originale posteriore per mostrare il codice originale che ha causato l’errore. Altrimenti si crea confusione a chi legge questa domanda (come il codice che c’è ora il non genera l’errore.

Lascia un commento