[英]Tkinter update label text in callback
問候,我試圖找到一個類似於我的問題,但沒有解決。 我正在嘗試從更改 ttk 條目內容時運行的回調 function 更新 ttk Label。 我試圖在這里隔離問題:
import tkinter
from tkinter import ttk
def func():
print("func!")
lsv.set("CHANGED!")
# def func2():
# return
root = tkinter.Tk()
frame = ttk.Frame(root)
frame.pack()
sv = tkinter.StringVar()
sv.trace_add("write", lambda *args: func())
entry = ttk.Entry(frame, textvariable=sv, width=25)
entry.pack()
lsv = tkinter.StringVar()
lsv.trace_add("read", ????). # lambda *args: func2() ?
lsv.set("Hello World")
label = ttk.Label(frame, text=lsv.get())
label.pack()
root.mainloop()
使用此代碼,我設法打印出“func”。 但是,每次我在條目中添加文本時。 我不明白如何讓 label 從“Hello World”更改為“CHANGED!”。
我假設我需要 lsv 中的lsv
。 但我不知道我還需要做什么。 trace_add 需要一個回調 function,所以我嘗試設置一個返回。 (func2)
感謝您的幫助! 謝謝
你把事情弄得太難了。 您所需要的只是一個StringVar
,它是Entry
和textvariable
的Label
。 你是 function func
並不是真正需要的,但我把它留在了里面。
import tkinter
from tkinter import ttk
def func():
print("func!")
# sv.set("CHANGED!") # Not needed.
root = tkinter.Tk()
frame = ttk.Frame(root)
frame.pack()
sv = tkinter.StringVar()
sv.trace_add("write", lambda *args: func())
entry = ttk.Entry(frame, textvariable=sv, width=25)
entry.pack()
label = ttk.Label(frame, textvariable=sv)
label.pack()
entry.focus_set()
root.mainloop()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.