Reputation: 139
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
Reputation: 1623
Try using .state() method for your button
>>> print(updateOrdertkCheckordstatusCbutton.state()) # checked
('selected',)
>>>> print(updateOrdertkCheckordstatusCbutton.state()) # not checked
()
Upvotes: 0