Search code examples
python-3.xfunctiontkintertkinter.checkbutton

How to get Get value of check button in python tkinter library?


I've created a travel form in which a user will submit name, city, gender, phone number etc. Also, I've created a check button so that a user wants a meal he can tick on the check button. My Question is How to get values of the Check button if the user has ticked the meal query written in the code. Can anyone explain to me the logic on how to get the value of the Check button if the user has ticked on it?

from tkinter import *

root = Tk()

root.geometry('800x800')



def b():
    print('Name is', namevalue.get()),
    print('Phone number  is', phonevalue.get())
    print('Gender is', gendervalue.get()),
    print('Extra Phone number is', phone1value.get()),
    print('City is', cityvalue.get())
    print('Food is required', )



f1 = Frame(root, bg = 'red', borderwidth = 8, relief = SUNKEN)
f1.grid()


Label(f1, text = 'Welcome to travel agency', pady = 5).grid(row = 0, column = 3)






#Making Widgets or we may call headers

name = Label(root, text = 'name')
phone = Label(root, text = 'Phone')
gender = Label(root, text = 'Enter your gender')
phone1 = Label(root, text = 'Extra Number')
city = Label(root, text = 'Your City')




name.grid(row = 1,column = 0)
phone.grid(row = 2,column = 0)
gender.grid(row = 3, column = 0)
phone1.grid(row = 4, column = 0)
city.grid(row = 5, column = 0)



#Assigining the headers a variable type

namevalue = StringVar()
phonevalue = StringVar()
gendervalue = StringVar()
phone1value = StringVar()
cityvalue = StringVar()
foodservicevalue = IntVar()






nameentry = Entry(root, textvariable = namevalue)
phoneentry = Entry(root, textvariable = phonevalue)
genderentry = Entry(root, textvariable = gendervalue)
cityentry = Entry(root, textvariable = cityvalue)
phone1entry = Entry(root, textvariable = phone1value)





nameentry.grid(row = 1, column = 3)
phoneentry.grid(row = 2, column = 3)
genderentry.grid(row = 3, column = 3)
phone1entry.grid(row = 4, column = 3)
cityentry.grid(row = 5, column = 3)




#Creating Check Button checkbutton

foodservicevalue = Checkbutton(text ='Do you wan\'t any meals', variable = foodservicevalue)
foodservicevalue.grid(row = 6, column = 3, padx = 1)


#Button and packing with assiginn

Button(text = 'Submit', command = b).grid(row = 7, column = 3)



root.mainloop()

    

Solution

  • This code works:

    
    from tkinter import *
    
    root = Tk()
    
    root.geometry('800x800')
    
    
    def b():
        print('Name is', namevalue.get()),
        print('Phone number  is', phonevalue.get())
        print('Gender is', gendervalue.get()),
        print('Extra Phone number is', phone1value.get()),
        print('City is', cityvalue.get())
    
        if food_required.get() == 1:
            print("Food is required.")
    
        elif food_required.get() == 0:
            print("Food is not required.")
    
        # When the check button is clicked, then the value is 1 and it can be get using the .get() function.
        # Similarly when the check button is not clicked then the value is 0.
    
    
    f1 = Frame(root, bg='red', borderwidth=8, relief=SUNKEN)
    f1.grid()
    
    Label(f1, text='Welcome to travel agency', pady=5).grid(row=0, column=3)
    
    # Making Widgets or we may call headers
    
    name = Label(root, text='name')
    phone = Label(root, text='Phone')
    gender = Label(root, text='Enter your gender')
    phone1 = Label(root, text='Extra Number')
    city = Label(root, text='Your City')
    
    name.grid(row=1, column=0)
    phone.grid(row=2, column=0)
    gender.grid(row=3, column=0)
    phone1.grid(row=4, column=0)
    city.grid(row=5, column=0)
    
    # Assigining the headers a variable type
    
    namevalue = StringVar()
    phonevalue = StringVar()
    gendervalue = StringVar()
    phone1value = StringVar()
    cityvalue = StringVar()
    food_required = IntVar()
    
    nameentry = Entry(root, textvariable=namevalue)
    phoneentry = Entry(root, textvariable=phonevalue)
    genderentry = Entry(root, textvariable=gendervalue)
    cityentry = Entry(root, textvariable=cityvalue)
    phone1entry = Entry(root, textvariable=phone1value)
    
    nameentry.grid(row=1, column=3)
    phoneentry.grid(row=2, column=3)
    genderentry.grid(row=3, column=3)
    phone1entry.grid(row=4, column=3)
    cityentry.grid(row=5, column=3)
    
    # Creating Check Button #cHECKBUTTON
    
    foodservicevalue = Checkbutton(text='Do you wan\'t any meals', variable=food_required)
    foodservicevalue.grid(row=6, column=3, padx=1)
    
    # Button and packing with assiginn
    
    Button(text='Submit', command=b).grid(row=7, column=3)
    
    root.mainloop()
    
    

    When I saw your code, I found that you have used the variable foodservicevalue as an IntVar() and Checkbutton. I have used the if else statements to fix your issue.