-1

我正在失去理智试图弄清楚这一点。

我的 Python3 Checkbutton 引用 IntVar() 不起作用。每当我在 IntVar 上调用 get() 时,即使选中/选中复选框,我总是得到 0。其他一切,例如。StringVar,Entry 工作正常。

提前感谢您的帮助。

请看下面的配置。

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)
4

1 回答 1

0

尝试为您的按钮使用 .state() 方法

>>> print(updateOrdertkCheckordstatusCbutton.state())  # checked
('selected',)
>>>> print(updateOrdertkCheckordstatusCbutton.state())  # not checked
()
于 2020-07-23T07:17:04.867 回答