Tkinter:如何在主循环中实现标签内容更新?
Tkinter点击按钮后更新标签内容的解决方案
问题原因
你当前的代码里,标签t25、t26只是在初始化时读取了tx1、ty1的初始值,之后调用calculate函数修改变量值时,标签文本不会自动同步——因为标签和变量之间没有建立关联,也没有手动更新标签内容的逻辑。
解决方案1:用textvariable绑定变量(推荐)
Tkinter的变量类(比如DoubleVar)可以直接和标签的textvariable参数绑定,变量值变化时,标签会自动更新显示内容,无需手动拼接文本。
修改后的完整代码:
import tkinter as tk from tkinter import ttk from tkinter import filedialog from tkinter import messagebox # from mainSIMstitchV2 import * # 演示时可暂时注释 root = tk.Tk() root.geometry("800x600") root.title(" abc ") tx1=tk.DoubleVar() ty1=tk.DoubleVar() angle1=tk.DoubleVar() tx2=tk.DoubleVar() ty2=tk.DoubleVar() angle2=tk.DoubleVar() def calculate (): tx1.set(tx1.get()+1.1) print(tx1.get()) ty1.set(ty1.get()+1.1) print(ty1.get()) button4 = tk.Button(root, text='Calculate', command=calculate) button4.config(height=2, width=10) button4.place(x=200,y=220) resultsframe = tk.Frame(root, width=735, height=200, background="red") resultsframe.columnconfigure(0, weight=1) resultsframe.columnconfigure(1, weight=2) resultsframe.columnconfigure(2, weight=3) resultsframe.place(x=30,y=300) f2 = tk.Frame(resultsframe,width=245, height=200) f2.grid(row=0, column=1) # 用textvariable绑定变量,同时设置显示格式 t25 = tk.Label(f2, textvariable=tx1, format="x: %.1f") t25.place(x=0,y=90) t26 = tk.Label(f2, textvariable=ty1, format="y: %.1f") t26.place(x=0,y=110) root.mainloop()
解决方案2:手动更新标签文本
如果不想用变量绑定,也可以在calculate函数里修改变量值后,手动更新标签的text属性:
修改后的calculate函数:
def calculate (): tx1.set(tx1.get()+1.1) print(tx1.get()) # 手动更新标签文本 t25.config(text=f"x: {tx1.get():.1f}") ty1.set(ty1.get()+1.1) print(ty1.get()) # 手动更新标签文本 t26.config(text=f"y: {ty1.get():.1f}")
内容的提问来源于stack exchange,提问作者TMul
相关产品推荐
相关产品推荐

