簡體   English   中英

TypeError: method() 接受 1 個位置參數,但給出了 4 個。 [使用 tkinter]

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM