如何在TkInter中传输小部件之间的数据(Python)

3 投票
1 回答
2621 浏览
提问于 2025-04-17 13:03

我正在制作一个有图形界面的程序。我希望在点击一个按钮后,输入在一个输入框(Entry widget)里的文本能够显示在一个标签(Label widget)上。目前,点击按钮后,显示的内容只有:

(PY_VAR0 + PY_VAR1)^PYVAR2

这是整个程序的代码,我使用了一个类来作为框架布局。如果需要,我也可以提供这个类的代码,但我觉得这可能不太相关。

import math
from tkinter import *

app = Tk()

a_input = ParamIn(app, "Please enter A:")
a_input.pack()

b_input = ParamIn(app, "Please enter B:")
b_input.pack()

n_input = ParamIn(app, "Please enter n:")
n_input.pack()

int1 = IntVar()
int2 = IntVar()
int3 = IntVar()

form = StringVar()
form.set('(%s + %s)^%s' % (int1, int2, int3))

def update_form():
    number1 = a_input.number.get()
    number2 = b_input.number.get()
    number3 = n_input.number.get()
    int1.set(number1)
    int2.set(number2)
    int3.set(number3)
    a_input.number.delete(0, END)
    b_input.number.delete(0, END)
    n_input.number.delete(0, END)

Button(app, text = "Contine", command = update_form).pack(pady = 10)

Label(app, relief = SUNKEN, textvariable = form).pack(padx = 10, pady = 5, side = "bottom")

app.mainloop()  

我不太明白为什么在程序的最后,主循环(mainloop)之前的标签没有更新,我觉得我的逻辑是对的。我是编程新手,可能只是个小错误。

1 个回答

-1

每次你想要改变标签的时候,都需要调用 form.set(...) 这个方法。光是改变用来定义初始值的变量是不会自动更新标签的。

撰写回答