[英]TypeError: method() takes 1 positional argument but 2 were given
[英]TypeError: method() takes 1 positional argument but 4 were given. [using tkinter]
我正在尝试使用 tkinter 创建一个 GUI。 我的目标非常简单,每次我更新旋转框的值时,都会出现一个带有文本“值是(值)”的标签。 这是一个小代码示例,我需要为完整代码创建一个类,但每次更新 spinbox 小部件时都会出现错误。
首先我导入库并创建一个类:
import tkinter as tk
from tkinter import ttk
class testclass:
def __init__(self):
self.Var = tk.StringVar(value=5)
self.widget = ttk.Spinbox(root,from_=0,to=10,textvariable=self.Var)
self.widget.pack()
self.Var.trace_add('write', self.trace_test)
def trace_test(self):
self.text = ttk.Label(root, text = 'the value is '+str(self.Var.get()))
self.text.pack()
然后我调用我的 GUI:
root = tk.Tk()
test1 = testclass()
root.mainloop()
该程序运行良好,但是当我更改旋转框的值时,会出现下一个错误:
TypeError: testclass.trace_test() takes 1 positional argument but 4 were given
我找不到任何解决这个问题的方法。 我不明白为什么它说给出了 4 个论点。
tkinter 中的trace_add
函数尝试将四个参数传递给定义的回调函数(请参阅此答案)。 然而,你的回调函数只接受一个参数,即调用函数的类实例(self)。
如果您不关心传递给回调函数的参数(我怀疑您这样做),您可以简单地接受它们,然后不对它们做任何事情,如下所示:
def trace_test(self, *args):
self.text = ttk.Label(root, text = 'the value is '+str(self.Var.get()))
self.text.pack()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.