tkinter跟踪方法错误

时间:2017-02-07 16:51:12

标签: python tkinter

我想首先说我知道其他人已经遇到过这个问题,但我已经查看了对他们的回复,而且他们中没有一个相似,足以帮助我解决问题。

我正在尝试跟踪一个Entry框,如果Entry是正确的大小,请浏览SQL数据库并找到相应的值。

https://i.stack.imgur.com/egSX6.png是GUI,如果填写了条件,则$的字段应该更新。

我添加了此代码以检查条目:

def update_winner():
    cursor = conn.cursor()
    winner = winner_id.get()
    school = school_name.get()
    temp = school+winner

    if len(temp) == 5:

        cursor.execute("SELECT Rating FROM KIDS WHERE LocalID = ?", temp)
        rating=cursor.fetchval()
        cursor.execute("SELECT FirstName FROM KIDS WHERE LocalID = ?", temp)
        name=cursor.fetchval()

        winner_name.set(name)

winner_id.trace("w",update_winner)

ratings.mainloop()

当我运行它时,我立即将任何内容放入提供给winner_id的条目中我得到以下错误:TypeError:update_winner()接受0个位置参数但是给出了3个。

update_winner()的参数来自哪里?它在跟踪方法中被调用,我认为我没有传递任何东西。

1 个答案:

答案 0 :(得分:1)

修改StringVar内容后,将使用3个参数调用update_winner函数(有关详细信息,请参阅What are the arguments to Tkinter variable trace method callbacks?)。由于您的函数不带任何参数,因此它会给您错误TypeError: update_winner() takes 0 positional arguments but 3 were given

要更正它,只需更改def update_winner():中的def update_winner(*args):