TypeError:generatecode()获取0个位置参数,但给出了1

时间:2017-05-08 03:59:13

标签: python tkinter

试图创建一个程序,当你点击按钮(生成代码)时,它从文件中提取一行数据并输出到

TypeError:generatecode()获取0个位置参数,但是给出了1个

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

1 个答案:

答案 0 :(得分:7)

当您在类上调用方法时(例如在这种情况下为generatecode()),Python会自动将self作为函数的第一个参数传递。因此,当您致电self.my_func()时,更像是致电MyClass.my_func(self)

因此,当Python告诉你“generatecode()需要0个位置参数但是给出了1”时,它告诉你你的方法设置为不带参数,但self参数仍在传递时方法被调用,所以实际上它接收一个参数。

在方法定义中添加self可以解决问题。

def generatecode(self):
    pass  # Do stuff here

或者,您可以将方法设为静态,在这种情况下,Python将传递self作为第一个参数:

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