通过选中Entry框将信息加载到tkinter

时间:2017-02-06 04:37:00

标签: python tkinter

在输入Entry小部件完成后,有没有办法让tkinter小部件更新?

https://i.stack.imgur.com/egSX6.png

最初的Elo程序是使用Access in Form完成的。当玩家条目被填满时,$表示的标签/条目将搜索数据库并显示信息。

GUI运行时是否有某种方法可以更新Label?它的触发器可能是Entry字段中的字符数为3个字符。我不知道如何在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)

loser_id.trace("w",update_loser)
winner_id.trace("w",update_winner)

ratings.mainloop()

当我运行这样的代码时,只要我在wins_id框中输入文本,我就会收到此错误:TypeError:update_winner()获取0个位置参数,但是给出了3个

1 个答案:

答案 0 :(得分:3)

您可以将StringVar的实例与条目小部件相关联,然后对该变量进行跟踪。只要变量值发生更改,就会调用跟踪,只要用户键入条目小部件,值就会更改。

在调用的函数中,您可以使用configure方法更改标签中显示的值。

这是一个简短的例子。在此示例中,当您键入条目小部件时,标签将更新以显示输入的内容。

import tkinter as tk

class Example(tk.Frame):
    def __init__(self, parent):
        tk.Frame.__init__(self, parent)

        self.v1 = tk.StringVar()
        self.e1 = tk.Entry(self, textvariable=self.v1)
        self.l1 = tk.Label(self)

        self.e1.pack(side="top", fill="x")
        self.l1.pack(side="top", fill="x")

        self.v1.trace("w", self.on_change)

    def on_change(self, *args):
        self.l1.configure(text="You entered: '%s'" % self.v1.get())

root = tk.Tk()
Example(root).pack(fill="both", expand=True)
root.mainloop()

您当然可以在变量跟踪中执行任何操作,例如在数据库中查找值。