试图创建一个程序,当你点击按钮(生成代码)时,它从文件中提取一行数据并输出到
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()
答案 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