Автоматически обновлять метку из переменной с формулой - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь создать метку, которая автоматически показывает результат из введенной переменной.В основном я пытаюсь объединить эти две программы:

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

эта (источник: Обновление метки Tkinter из переменной ) автоматически обновляет метку, однако она может обновлять только до того, чтобыл введен пользователем.

и этот:

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

проблема, с которой я столкнулся, это то, что если пользователь изменяет давление или температуру, результат не изменяется автоматически,(источник: Как получить значение из записи (Tkinter), использовать его в формуле и распечатать результат в метке )

Как сделать так, чтобы при изменении пользователем любой переменной, Python автоматически вычисляет новый результат и самостоятельно меняет метку?

1 Ответ

0 голосов
/ 26 ноября 2018

Всего лишь несколько вещей, которые вы пропустили.

  1. Виджетам Tkinters нужны переменные для хранения значений, введенных в них, которые вы упустили при создании в ваших виджетах температуры и давления.

  2. Вам лучше рассчитать свои значения, а затем set переменную виджетов.

Надеюсь, это поможет.

    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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...