【问题标题】:Automatically update label from variable with formula使用公式自动从变量更新标签
【发布时间】:2019-04-27 11:52:47
【问题描述】:

我正在尝试创建一个自动显示输​​入变量结果的标签。 基本上我正在尝试将这两个程序结合起来:

from tkinter import *

root = Tk()
var = StringVar()
var.set('hello')
l = Label(root, textvariable = var)
l.pack()
t = Entry(root, textvariable = var)
t.pack()
root.mainloop() # the window is now displayed

这个(来源:Update Tkinter Label from variable)自动更新标签,但它只能更新为用户输入的内容。

还有这个:

from tkinter import *
myWindow = Tk()
def MyCalculateFunction():
    pressure, temprature = float(box_pressure.get()), float(box_temprature.get())
    result = pressure + temperature

label_result.config(text="%f + %f = %f" % (pressure, temprature, result))

box_pressure = Entry(myWindow)
box_pressure.pack()

box_temprature = Entry(myWindow)
box_temprature.pack()

button_calculate = Button(myWindow, text="Calcuate", command=MyCalculateFunction)
button_calculate.pack()

label_result = Label(myWindow)
label_result.pack() 

我遇到的问题是,如果用户改变压力或温度,结果不会自动改变。 (来源:How to get value from entry (Tkinter), use it in formula and print the result it in label

我怎样才能使当用户更改任何变量时,Python 会自动计算新结果并自行更改标签?

【问题讨论】:

  • label_result.config(...移动到def MyCalculateFunction():

标签: python variables tkinter label


【解决方案1】:

只是您错过了一些事情。

  1. Tkinter 小部件需要变量来保存输入到其中的值,而您在温度和压力小部件中创建时错过了这些值。

  2. 你最好计算你的值,然后set widgets 变量。

希望这会有所帮助。

    from tkinter import *
    myWindow = Tk()
    def MyCalculateFunction():
         label_variable=StringVar()
         label_result= Label(myWindow, textvariable=label_variable)
         label_result.pack()
         pressure, temperature = float(pressure_variable.get()), float(temperature_variable.get())
         result = pressure + temperature
         label_variable.set("%f + %f = %f" % (pressure, temperature, result))


    pressure_variable=StringVar()
    box_pressure = Entry(myWindow, textvariable=pressure_variable)
    box_pressure.pack()

    temperature_variable=StringVar()
    box_temprature = Entry(myWindow, textvariable=temperature_variable)
    box_temprature.pack()

    button_calculate = Button(myWindow, text="Calcuate",  command=MyCalculateFunction)
    button_calculate.pack()

【讨论】:

  • 如果与 label_result 和相关变量相关的代码被移到函数之外,则每次按下计算按钮时将不再添加标签。
  • 此外,如果任一输入字段未转换为浮点数,则会发生错误。该应用需要在计算函数中进行一些类型检查,以使其更加健壮。
猜你喜欢
  • 2011-08-10
  • 2011-02-05
  • 2020-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多