[英]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.