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

309 views Asked by At

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

    
2

There are 2 answers

1
AudioBubble On BEST ANSWER

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.

2
TheLizzard On

This is @AmeyVijeesh's code but I removed the StringVars:

from tkinter import *


def b():
    print("Name is", nameentry.get()),
    print("Phone number  is", phoneentry.get())
    print("Gender is", genderentry.get()),
    print("Extra Phone number is", phone1entry.get()),
    print("City is", cityentry.get())

    if food_required.get() == 1:
        print("Food is required.")
    elif food_required.get() == 0:
        print("Food is not required.")


root = Tk()
root.geometry("800x800")

f1 = Frame(root, bg="red", borderwidth=8, relief="sunken")
f1.grid()

label = Label(f1, text="Welcome to travel agency", pady=5)
label.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
food_required = IntVar()

nameentry = Entry(root)
phoneentry = Entry(root)
genderentry = Entry(root)
cityentry = Entry(root)
phone1entry = Entry(root)

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 want any meals", variable=food_required)
foodservicevalue.grid(row=6, column=3, padx=1)

# Button and packing with assiginn

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

root.mainloop()

Using <tkinter.Entry>.get() is much simpler than creating StringVars and assigning them to the <tkinter.Entry>s