簡體   English   中英

Tkinter 更新 label 文本回調

[英]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 ,它是EntrytextvariableLabel 你是 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM