如何在 python tkinter 库中获取选中按钮的值?

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

我创建了一个旅行表单,用户可以在其中提交姓名、城市、性别、phone 号码等。此外,我还创建了一个勾选按钮,以便用户想要一顿饭勾选检查按钮。 我的问题是如果用户勾选了代码中编写的膳食查询,如何获取 Check 按钮的值。 任何人都可以向我解释一下如果用户勾选了 Check 按钮,如何获取它的值的逻辑?

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

    

此代码有效:


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

当我看到你的代码时,我发现你使用了变量 foodservicevalue 作为 IntVar() 和 Checkbutton。我已使用 if else 语句来解决您的问题。

这是@AmeyVijeesh 的代码,但我删除了 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()

使用 <tkinter.Entry>.get() 比创建 StringVar 并将它们分配给 <tkinter.Entry> 简单得多