有没有办法让 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()
当然,您可以在变量跟踪中执行任何所需的操作,例如在数据库中查找值。