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

如何在TkInter(Python)中的小部件之间传输数据,python,tkinter,widget,Python,Tkinter,Widget,我正在用GUI制作一个程序。我希望在输入小部件中输入的文本在单击按钮后显示在标签小部件中。到目前为止,按下按钮后唯一显示的是: (PY_VAR0+PY_VAR1)^PYVAR2 这是整个程序的代码,我使用一个类作为框架布局。如果需要的话,也可以提供这方面的代码,但我假设它不相关 import math from tkinter import * app = Tk() a_input = ParamIn(app, "Please enter A:") a_input.pack() b_inp

我正在用GUI制作一个程序。我希望在输入小部件中输入的文本在单击按钮后显示在标签小部件中。到目前为止,按下按钮后唯一显示的是:

(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()  

我不确定为什么程序末尾的标签在主循环之前没有更新,因为我觉得我的逻辑是正确的。我是编程新手,所以这可能只是一个愚蠢的错误

每次需要更改标签时,都需要调用
form.set(…)
。它不会因为您更改了用于定义其初始值的变量而自动更改。

我认为将应用程序封装在自己的类中是相当标准的。这样做时,所有组件都可以在类内部轻松访问。查看这里的示例:当我将form.set(“(%s+%s)^%s”“(int1,int2,int3))添加到update_form函数时,我仍然得到相同的输出>(PY_VAR0+PY_VAR1)^PYVAR2这是为什么?@Kage93:我不知道。尝试添加打印语句以查看int1、int2和int3的值。它们仍然是:PY_VAR0 PY_VAR1 PY_var2您需要在格式语句中使用
int1.get()
,而不是
int1
PY_VAR0
是小部件的名称,但您希望使用该值。