Feb-12-2020, 11:37 AM
Dear Sirs,
This is my python code:
I tried to use:
b1.state('normal')
b2['state'] = 'normal'
b0.config(state = 'disabled')
b0.config(state=NORMAL)
no one works!
Why?
Thanks for Your help
Best Regards
This is my python code:
from tkinter import * import math import numpy as np gui = Tk() gui.title("Money Split") gui.geometry("580x200") v1 = IntVar() v2 = IntVar() v3 = IntVar() v4 = IntVar() def testVal(inStr,i,acttyp): ind=int(i) if acttyp == '1': #insert if not inStr[ind].isdigit(): return False return True R = 4 C = 3 valore = StringVar() # Initialize np np = [[50, 0, 0], [20, 0, 0], [10, 0, 0], [5, 0, 0]] # For printing the np def shownp(): for i in range(R): for j in range(C): print(np[i][j], end = " ") print() #create a callback for our button def callback(): global b50 global a1 if e0.get() != '': importo = int(e0.get()) status_label['text'] = importo if importo % 5 == 0 and importo >= 5: if v1.get(): b50 = int(e1.get()) else: if importo >= 50: b50 = math.ceil(importo / 85) else: b50=0 np [0][2] = b50 a1 = str(b50) e1.delete(0, END) e1.insert(0, a1) if v2.get(): b20 = int(e2.get()) else: if (importo - b50 * 50) >= 20: b20 = math.ceil((importo - b50 * 50) / 35) else: b20=0 np [1][2] = b20 a2 = str(b20) e2.delete(0, END) e2.insert(0, a2) if v3.get(): b10 = int(e3.get()) else: if (importo - b50 * 50 - b20 * 20) >= 10: b10 = math.ceil((importo - b50 * 50 - b20 * 20) / 15) else: b10=0 np [2][2] = b10 a3 = str(b10) e3.delete(0, END) e3.insert(0, a3) if v4.get(): b5 = int(e4.get()) else: if (importo - b50 * 50 - b20 * 20 - b10 * 10) >= 5: b5 = math.ceil((importo - b50 * 50 - b20 * 20 - b10 * 10) / 5) else: b5 = 0 np [3][2] = b5 a4 = str(b5) e4.delete(0, END) e4.insert(0, a4) print (b50 * 50 + b20 * 20 + b10 * 10 + b5 * 5) shownp() status_label['text'] = 'Done!' b1.state('normal') b2['state'] = 'normal' b3['state'] = 'normal' b4['state'] = 'normal' else: status_label['text'] = 'Insert a number divisible by 5' e0.delete(0,END) e1.delete(0,END) e2.delete(0,END) e3.delete(0,END) e4.delete(0,END) b1.configure(state='disabled') b2.configure(state='disabled') b3.configure(state='disabled') b4.configure(state='disabled') e0.focus def change50(v1): print(v1) e1.delete(0,END) e2.delete(0,END) e3.delete(0,END) e4.delete(0,END) e1.insert(0, np [0][2] + v1) np [0][1] = 1 callback() def change20(v2): e1.delete(0,END) e2.delete(0,END) e3.delete(0,END) e4.delete(0,END) e2.insert(0, np [1][2] + v2) np [1][1] = 1 callback() def change10(v3): e1.delete(0,END) e2.delete(0,END) e3.delete(0,END) e4.delete(0,END) e3.insert(0, np [2][2] + v3) np [2][1] = 1 callback() def change5(v4): e1.delete(0,END) e2.delete(0,END) e3.delete(0,END) e4.delete(0,END) e3.insert(0, np [3][2] + v4) np [3][1] = 1 callback() def verifica(event=None): val1 = v1.get() * int(e1.get()) * 50 val2 = v2.get() * int(e2.get()) * 20 val3 = v3.get() * int(e3.get()) * 10 val4 = v4.get() * int(e4.get()) * 5 print (val1,val2,val3,val4) somma=val1+val2+val3+val4 print (somma) valtot=int(e0.get()) if somma > valtot: b0.config(state = 'disabled') status_label['text'] = 'Change the fixed number of banknotes because it exceeds the amount to be split!' else: b0.config(state=NORMAL) Label(gui, text="Importo").place(x=5, y=5, width=50) Label(gui, text="50,00 €").place(x=5, y=35, width=50) Label(gui, text="20,00 €").place(x=5, y=65, width=50) Label(gui, text="10,00 €").place(x=5, y=95, width=50) Label(gui, text="5,00 €").place(x=5, y=125, width=50) a1 = StringVar() a2 = StringVar() a3 = StringVar() a4 = StringVar() e0 = Entry(gui, validate="key", justify='center') e0['validatecommand'] = (e0.register(testVal),'%P','%i','%d') e1 = Entry(gui, textvariable = a1, justify='center') e2 = Entry(gui, textvariable = a2, justify='center') e3 = Entry(gui, textvariable = a3, justify='center') e4 = Entry(gui, textvariable = a4, justify='center') #e0.grid(row=0, column=1) e0.place(x=100, y=5, width=100) e1.place(x=100, y=35, width=100) e2.place(x=100, y=65, width=100) e3.place(x=100, y=95, width=100) e4.place(x=100, y=125, width=100) b0 = Button(gui, text="Split", state='normal', command=callback).place(x=100, y=155, height=20, width=100) b1 = Checkbutton(gui, text="fix", state='disabled', variable=v1, command=verifica).place(x=210, y=35, height=20, width=100) b2 = Checkbutton(gui, text="fix", state='disabled',variable=v2, command=verifica).place(x=210, y=65, height=20, width=100) b3 = Checkbutton(gui, text="fix", state='disabled',variable=v3, command=verifica).place(x=210, y=95, height=20, width=100) b4 = Checkbutton(gui, text="fix", state='disabled',variable=v4, command=verifica).place(x=210, y=125, height=20, width=100) b5 = Button(gui, text="Quit", command=gui.destroy).place(x=370, y=155, height=20, width=100) status_label =Label(gui, height =3, width =35, bg ="black", fg ="#00FF00", text ="---", wraplength =200) status_label.place(x=300, y=35, width=250) e0.focus() gui.mainloop()I don't know why change button and checkbutton state is impossible for me.
I tried to use:
b1.state('normal')
b2['state'] = 'normal'
b0.config(state = 'disabled')
b0.config(state=NORMAL)
no one works!

Why?

Thanks for Your help
Best Regards