传递了 3 个参数,但引用说我传递了 4 个
Passing 3 arguments but trackback says I am passing 4
几个小时以来,我一直试图在这里找到问题。据我所知,网上人们实际上传递的参数比他们想象的要多,因为我能找到与此 TypeError 相关的所有 post。出于某种原因,这个问题只会在我创建一个继承自 Toplevel
.
的 class 时发生
回击:
Tkinter 回调异常
Traceback (most recent call last):
File "C:\Program Files\Python36\lib\tkinter\__init__.py", line 1699, in __call__
return self.func(*args)
File "C:\Users\Makin Bacon\workspace\stuff\MINT-master\test3.py", line 12, in fake_error
topErrorWindow(self, message, detail)
File "C:\Users\Makin Bacon\workspace\stuff\MINT-master\test3.py", line 17, in __init__
tk.Toplevel.__init__(self, master, message, detail)
TypeError: __init__() takes from 1 to 3 positional arguments but 4 were given
我什至试图将我的参数发送到一个只打印所有参数的虚拟函数,但它只打印了 3 个参数。
这是我用来测试以查看传递了哪些参数的代码。
import tkinter as tk
class MintApp(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
tk.Button(self, text="test error", command=self.fake_error).pack()
def fake_error(self):
message = "test"
detail = "test detail"
topErrorWindow(self, message, detail)
def topErrorWindow(*items):
for item in items:
print("TEST: ", item)
if __name__ == "__main__":
App = MintApp()
App.mainloop()
结果如下:
TEST: .
TEST: test
TEST: test detail
现在我不确定为什么我得到 .
参数 self
,我认为这可能是问题的一部分,但我在网上找不到任何相关问题。
这是我的代码,在我看来应该创建一个带有简单标签的顶级 window。相反,我得到了上面列出的引用错误。
import tkinter as tk
class MintApp(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
tk.Button(self, text="test error", command=self.fake_error).pack()
def fake_error(self):
message = "test"
detail = "test detail"
topErrorWindow(self, message, detail)
class topErrorWindow(tk.Toplevel):
def __init__(self, master, message, detail):
tk.Toplevel.__init__(self, master, message, detail)
tk.Label(self, text = "{}, {}".format(message, detail)).grid(row=0, column=0, sticky="nsew")
if __name__ == "__main__":
App = MintApp()
App.mainloop()
当你这样做时:
tk.Toplevel.__init__(self, master, message, detail)
您正在向 __init__
传递四个参数:self
、master
、message
、detail
。但是,正如错误明确指出的那样,Toplevel.__init__
需要一到三个参数。
我不知道你希望 tkinter Toplevel
class 对 message
和 detail
做什么,但它们不会映射到任何Toplevel
.
的参数
解决方案是不要将无用的参数传递给 superclass 构造函数,因为它们对您的 subclass 有意义,但对 superclass:
tk.Toplevel.__init__(self, master)
几个小时以来,我一直试图在这里找到问题。据我所知,网上人们实际上传递的参数比他们想象的要多,因为我能找到与此 TypeError 相关的所有 post。出于某种原因,这个问题只会在我创建一个继承自 Toplevel
.
回击:
Tkinter 回调异常
Traceback (most recent call last):
File "C:\Program Files\Python36\lib\tkinter\__init__.py", line 1699, in __call__
return self.func(*args)
File "C:\Users\Makin Bacon\workspace\stuff\MINT-master\test3.py", line 12, in fake_error
topErrorWindow(self, message, detail)
File "C:\Users\Makin Bacon\workspace\stuff\MINT-master\test3.py", line 17, in __init__
tk.Toplevel.__init__(self, master, message, detail)
TypeError: __init__() takes from 1 to 3 positional arguments but 4 were given
我什至试图将我的参数发送到一个只打印所有参数的虚拟函数,但它只打印了 3 个参数。
这是我用来测试以查看传递了哪些参数的代码。
import tkinter as tk
class MintApp(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
tk.Button(self, text="test error", command=self.fake_error).pack()
def fake_error(self):
message = "test"
detail = "test detail"
topErrorWindow(self, message, detail)
def topErrorWindow(*items):
for item in items:
print("TEST: ", item)
if __name__ == "__main__":
App = MintApp()
App.mainloop()
结果如下:
TEST: .
TEST: test
TEST: test detail
现在我不确定为什么我得到 .
参数 self
,我认为这可能是问题的一部分,但我在网上找不到任何相关问题。
这是我的代码,在我看来应该创建一个带有简单标签的顶级 window。相反,我得到了上面列出的引用错误。
import tkinter as tk
class MintApp(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
tk.Button(self, text="test error", command=self.fake_error).pack()
def fake_error(self):
message = "test"
detail = "test detail"
topErrorWindow(self, message, detail)
class topErrorWindow(tk.Toplevel):
def __init__(self, master, message, detail):
tk.Toplevel.__init__(self, master, message, detail)
tk.Label(self, text = "{}, {}".format(message, detail)).grid(row=0, column=0, sticky="nsew")
if __name__ == "__main__":
App = MintApp()
App.mainloop()
当你这样做时:
tk.Toplevel.__init__(self, master, message, detail)
您正在向 __init__
传递四个参数:self
、master
、message
、detail
。但是,正如错误明确指出的那样,Toplevel.__init__
需要一到三个参数。
我不知道你希望 tkinter Toplevel
class 对 message
和 detail
做什么,但它们不会映射到任何Toplevel
.
解决方案是不要将无用的参数传递给 superclass 构造函数,因为它们对您的 subclass 有意义,但对 superclass:
tk.Toplevel.__init__(self, master)