2015-08-21 5 views
1

Я делаю некоторую программу в tkinter, и у меня есть одна проблема.Переменная ввода Python (tkinter)

В записи Tkinter, если я поставлю 1 textvariable имя в оба входа он будет показывать мгновенный на обоих записей, как это:

Но я хочу правой записи сразу умноженной 500. Так Если я положил 2 слева, он должен показать 1000 справа.

Label(frame2, foreground="#E3AAD5", text="500e").grid(row=0, column=0, sticky=W, padx=10) # Kreira label (opis kućice pokraj) 
    v_500 = IntVar() 
    _500 = Entry(frame2, textvariable=v_500) 
    _500.grid(row=0, column=1, sticky=W) 

    Entry(frame2, textvariable=v_500*500).grid(row=0, column=2, sticky=W) 

Но это не работает.

+0

ТипError: неподдерживаемый тип операндов для *: 'instance' и 'int' – CheckThisOut

+0

Я думаю, вы должны использовать 'validatecommand' –

ответ

2

Прямой поддержки нет. При этом то, что вы хотите сделать, довольно просто. IntVar s может быть настроен на вызов функции при ее изменении. Вы можете использовать этот обратный вызов для умножения и обновления виджета.

Например:

def update_other_label(name1, name2, mode): 
    value = v_500.get() 
    product = value * 500 
    v_500_mult.set(product) 

v_500 = IntVar() 
v_500.trace("w", update_other_label) 
v_500_mult = Intvar() 
... 
_500 = Entry(frame2, textvariable=v_500) 
Entry(frame2, textvariable=v_500_mult).grid(row=0, column=2, sticky=W) 

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

+0

, почему 3 параметра? – CheckThisOut

+0

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

+0

Хорошо, спасибо. Но что, если у меня больше переменных для умножения, не только 500. Мне нужно умножить 10 переменных с 1 определением. Я не хочу испортить vars, потому что это программа для подсчета. – CheckThisOut

Смежные вопросы