Python (Tkinter) - dynamicky promnělivý objekt/widget

Ahoj,

chtěl bych požádat o pomoc s jedním řešením. Potřeboval bych aby se mi objekt dynamicky aktualizoval. Nejlépe to asi vysvětlím na příkladu: dejme tomu, že mám dva vstupní (zadávací) objekty. Posuvný měřítko (scale) a klasické vstupní pole (entry). Obě hodnoty se aritmeticky a výsledek se zobrazí v labelu... nebo se na základě těchto hodnot změní barva nějakého widgetu. Důležité je, že se to musí stát okamžitě, hned potom co co například ustálím posuvné tlačítko (scale). Bohužel já musím přidat potvrzovací tlačítko. Dynamicky se mi to rozchodit nepodařilo.

Kód: [Vybrat]
from tkinter import *
root = Tk()

def calc():
    var3=(int(var1.get()) * int(var2.get()))
    label1.configure(text=var3)

var1=IntVar()
var2=IntVar()
scale1=Scale(root, variable=var1)
entry1=Entry(root, textvariable=var2)
scale1.pack()
entry1.pack()

button1=Button(root, text="confirm", command=calc)
button1.pack()
label1=Label(root)
label1.pack()

root.mainloop()

« Poslední změna: 25. 10. 2017, 19:44:12 od Petr Krčmář »


Re:Python (Tkinter) - dynamicky promnělivý objekt/widget.
« Odpověď #1 kdy: 25. 10. 2017, 19:03:54 »
http://effbot.org/tkinterbook/variable.htm

ala promenna.trace. Argumenty v callbacku si nepamatuji, lze to vysledovat debuggerem.

atarist

Re:Python (Tkinter) - dynamicky promnělivý objekt/widget
« Odpověď #2 kdy: 25. 10. 2017, 20:04:41 »
Zaregistruj si callback funkci zavolanou při změně hodnoty té proměnné:

<code>
var = StringVar()
var.trace("w", lambda name, index, mode, var=var: callback_funkce(var))
entry = Entry(root, textvariable=var)

def callback_funkce(var):
    value = var.get()
<code>

Možná by šlo obejít ten trik var=var, ale nevím jak...