Как передавать данные между виджетами в TkInter (Python) - PullRequest
3 голосов
/ 15 февраля 2012

Я делаю программу с графическим интерфейсом. Я хочу, чтобы текст, введенный в виджете «Запись», отображался в виджете «Метка» после нажатия кнопки. Пока единственное, что появляется после нажатия кнопки:

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

Я не уверен, почему Label в конце программы перед основной циклом не обновляется, так как я чувствую, что моя логика верна. Я новичок в программировании, так что это может быть просто глупой ошибкой.

1 Ответ

0 голосов
/ 15 февраля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...