Python Forum
[PyGUI] Python 3.8.1 Tkinter Widget stete change
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[PyGUI] Python 3.8.1 Tkinter Widget stete change
#1
Dear Sirs,
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! Angry
Why? Huh
Thanks for Your help
Best Regards
Reply


Messages In This Thread
Python 3.8.1 Tkinter Widget stete change - by sasiap - Feb-12-2020, 11:37 AM

Possibly Related Threads…
Thread Author Replies Views Last Post
  TKinter Widget Attribute and Method Quick Reference zunebuggy 3 851 Oct-15-2023, 05:49 PM
Last Post: zunebuggy
  [Tkinter] Tkinter don't change the image DQT 2 1,623 Jul-22-2022, 10:26 AM
Last Post: menator01
  [Tkinter] The Text in the Label widget Tkinter cuts off the Long text in the view malmustafa 4 4,861 Jun-26-2022, 06:26 PM
Last Post: menator01
  Tkinter - How can I change the default Notebook border color? TurboC 5 14,769 May-23-2022, 03:44 PM
Last Post: bigmac
  Can't get tkinter button to change color based on changes in data dford 4 3,418 Feb-13-2022, 01:57 PM
Last Post: dford
  Tkinter Exit Code based on Entry Widget Nu2Python 6 2,992 Oct-21-2021, 03:01 PM
Last Post: Nu2Python
  tkinter change the text of the checkbox zazas321 1 3,832 Sep-17-2021, 06:19 AM
Last Post: zazas321
  tkinter text widget word wrap position chrisdb 6 7,567 Mar-18-2021, 03:55 PM
Last Post: chrisdb
  Tkinter - How can I extend a label widget? TurboC 2 2,784 Oct-13-2020, 12:15 PM
Last Post: zazas321
  Tkinter menu font size -method to change tonycat 2 7,835 Oct-11-2020, 02:43 AM
Last Post: tonycat

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020