marcusaureliusbrutus
marcusaureliusbrutus

Reputation: 139

Another Tkinter Checkbutton Not Working Problem

Am losing my mind trying to figure this out.

My Python3 Checkbutton referencing IntVar() is not working. Whenever I call a get() on the IntVar I always get 0 even if the checkbox is ticked/checked. Everything else, eg. StringVar, Entry works fine.

Thanks in advance for any help.

Please see below config.

def updateOrder():
    updateOrdertk = tk.Tk()
    updateOrdertk.title('UPDATE ORDER')
    updateOrdertklabela = tk.Label(updateOrdertk,fg="brown",text="Update Order by Order Ref.")
    updateOrdertklabela.pack()
    updateOrdertklabelb = tk.Label(updateOrdertk,fg="brown",text="Be careful updating.")
    updateOrdertklabelb.pack()
    updateOrdertklabelc = tk.Label(updateOrdertk,fg="brown",text="For Notes, indicate why Total Amount changed, eg. pid100 oos, pid200 wrong price.")
    updateOrdertklabelc.pack()
    #updateCanvas = Canvas(updatetk, bg = "cyan", height = 25, width = 300)

    updateOrdertkstartframe = Frame(updateOrdertk, relief=RAISED, borderwidth=1)
    updateOrdertkstartframe.pack(fill=X)
    updateOrdertklabelOrderref = tk.Label(updateOrdertkstartframe, text="ORDER REF:")
    updateOrdertklabelOrderref.pack(side=LEFT, padx=5, pady=5)
    updateOrdertkInputOrderref = tk.Entry(updateOrdertkstartframe)
    updateOrdertkInputOrderref.pack(fill=X, padx=5, expand=True)

    updateOrdertkChoicesordstatus = {'SUBMITTED', 'PROCESSING','IN-TRANSIT','DELIVERED-OK','DELIVERED-W-ISSUES','CANCELLED'}
    updateOrdertkChoicesordstatusvar = StringVar(updateOrdertk)
    updateOrdertkChoicesordstatusvar.set('SUBMITTED')
    updateOrdertkCheckordstatusvar = IntVar()

    
    updateOrdertkframe2 = Frame(updateOrdertk, relief=RAISED, borderwidth=1)
    updateOrdertkframe2.pack(fill=X)
    updateOrdertklabelordstatus = tk.Label(updateOrdertkframe2, text="ORDER STATUS:")
    updateOrdertklabelordstatus.pack(side=LEFT, padx=5, pady=5)
    updateOrdertkCheckordstatusCbutton = tk.Checkbutton(updateOrdertkframe2,text="Update",variable=updateOrdertkCheckordstatusvar)
    updateOrdertkCheckordstatusCbutton.pack(side=RIGHT, padx=5, pady=5)
    ordstatuslistmenu = OptionMenu(updateOrdertkframe2, updateOrdertkChoicesordstatusvar, *updateOrdertkChoicesordstatus)
    ordstatuslistmenu.pack(side=RIGHT,padx=5, pady=5)
    

    updateOrdertkChecktotamtvar = IntVar()

    updateOrdertkframe1 = Frame(updateOrdertk, relief=RAISED, borderwidth=1)
    updateOrdertkframe1.pack(fill=X)
    updateOrdertklabeladjtotal = tk.Label(updateOrdertkframe1, text="NEW TOTAL AMOUNT:")
    updateOrdertklabeladjtotal.pack(side=LEFT, padx=5, pady=5)
    updateOrdertkChecktotamtCbutton = tk.Checkbutton(updateOrdertkframe1,text="Update",variable=updateOrdertkChecktotamtvar)
    updateOrdertkChecktotamtCbutton.pack(side=RIGHT, padx=5, pady=5)
    updateOrdertkInputadjtotal = tk.Entry(updateOrdertkframe1)
    updateOrdertkInputadjtotal.pack(fill=X, padx=5, expand=True)
    

    updateOrdertkChoicesadjtype = {'ADD TO ORIGINAL AMOUNT', 'DEDUCT FROM ORIGINAL AMOUNT'}
    updateOrdertkChoicesadjtypevar = StringVar(updateOrdertk)
    updateOrdertkChoicesadjtypevar.set('DEDUCT FROM ORIGINAL AMOUNT')
    updateOrdertkCheckadjtypevar = IntVar()

    updateOrdertkframe3 = Frame(updateOrdertk, relief=RAISED, borderwidth=1)
    updateOrdertkframe3.pack(fill=X)
    updateOrdertklabeladjtype = tk.Label(updateOrdertkframe3, text="ADJUSTMENT TYPE:")
    updateOrdertklabeladjtype.pack(side=LEFT, padx=5, pady=5)
    updateOrdertkCheckadjtypeCbutton = tk.Checkbutton(updateOrdertkframe3,text="Update",variable=updateOrdertkCheckadjtypevar)
    updateOrdertkCheckadjtypeCbutton.pack(side=RIGHT, padx=5, pady=5)
    adjtypelistmenu = OptionMenu(updateOrdertkframe3, updateOrdertkChoicesadjtypevar, *updateOrdertkChoicesadjtype)
    adjtypelistmenu.pack(side=RIGHT,padx=5, pady=5)
    
    
    updateOrdertkChecknotesvar = IntVar()

    updateOrdertkframe4 = Frame(updateOrdertk, relief=RAISED, borderwidth=1)
    updateOrdertkframe4.pack(fill=BOTH)
    updateOrdertklabelnotes = tk.Label(updateOrdertkframe4, text="NOTES:")
    updateOrdertklabelnotes.pack(side=LEFT, padx=5, pady=5)
    updateOrdertkInputnotes = tk.Entry(updateOrdertkframe4)
    updateOrdertkInputnotes.pack(fill=BOTH, padx=5, expand=True)
    updateOrdertkChecknotesCbutton = tk.Checkbutton(updateOrdertkframe4,text="Update",variable=updateOrdertkChecknotesvar)
    updateOrdertkChecknotesCbutton.pack(side=LEFT, padx=5, pady=5)

    updateOrdertkendframe = Frame(updateOrdertk, relief=RAISED, borderwidth=1)
    updateOrdertkendframe.pack(fill=BOTH, expand=True)
    updateOrdertkGobutton = tk.Button(updateOrdertkendframe,text="UPDATE ORDER",fg="green", command= lambda: goUpdateOrder(updateOrdertkInputOrderref.get(),updateOrdertkChoicesordstatusvar.get(),updateOrdertkCheckordstatusvar.get(),
                                                                                                                        updateOrdertkInputadjtotal.get(),updateOrdertkChecktotamtvar.get(),updateOrdertkChoicesadjtypevar.get(),
                                                                                                                        updateOrdertkCheckadjtypevar.get(),updateOrdertkInputnotes.get(),updateOrdertkChecknotesvar.get()))
    updateOrdertkClosebutton = tk.Button(updateOrdertkendframe,text="CLOSE",fg="red", command=updateOrdertk.destroy)
    updateOrdertkClosebutton.pack(side=RIGHT,padx=5,pady=5)
    updateOrdertkGobutton.pack(side=RIGHT)

Upvotes: -1

Views: 64

Answers (1)

Vignesh
Vignesh

Reputation: 1623

Try using .state() method for your button

>>> print(updateOrdertkCheckordstatusCbutton.state())  # checked
('selected',)
>>>> print(updateOrdertkCheckordstatusCbutton.state())  # not checked
()

Upvotes: 0

Related Questions