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



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

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

最初的 Elo 程序是通过 Access 中的表单完成的。填写玩家条目后,用 $ 表示的标签/条目将搜索数据库并显示信息。

有没有办法在 GUI 运行时更新标签?当"输入"字段中的字符计数为 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()

当我像这样运行代码时,一旦我在winner_id框中输入文本,我就会收到此错误: 类型错误: update_winner(( 需要 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()

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

最新更新