2015-08-21 65 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

TypeError:不支持的操作數類型爲*:'instance'和'int' – CheckThisOut

+0

我認爲你必須使用'validatecommand' –

回答

2

沒有直接的支持你想要什麼。話雖如此,你想做什麼是相當容易的。 IntVar可以被配置爲當它們改變時調用一個函數。您可以使用此回調來進行乘法和更新小部件。

例如:

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個定義。我不想搞亂變數,因爲它是計數程序。 – CheckThisOut