tkinter несколько переключателей

У меня есть 2 набора переключателей, которые нужно выбрать, если я выберу один из второго набора, выбранная кнопка в первом наборе будет отменена, хотя соответствующая функция все еще работает. Вот пример и код

Для «Нужен конкретный номер?» (радио 1 и радио 2) и «Хотите отправить электронное письмо с другим адресом электронной почты?» (радио 5 и радио 6), я могу выбрать только 1 из них. например, если я выбираю радио 1, затем выбираю радио 5 или радио 6, радио 1 отменяется. Я не уверен, где я сделал неправильно. Не могли бы вы указать правильный путь? Вот мой код

from tkinter import *
from tkinter import messagebox
from tkinter.ttk import *
root = Tk()
def guiUDP():
    def enableSPNum() :
        entry5.configure(state = 'normal')
    def disableSPNum() :
        entry5.configure(state = 'disabled')
    def diffEmail() :
        entry8.configure(state = 'normal')
    def defaultEmail() :
        entry8.configure(state = 'disabled')
    def submitReq() :        
        userID = entry1.get()
        siteCode = entry2.get().upper()
        firstName = entry3.get().title()
        lastName = entry4.get().upper()
        spNum = entry5.get()
        vmEnable = select1.get()
        agentID = entry7.get().lower()
        eMail = entry8.get()
    entry1 = Entry(root)
    entry1.grid(column = 1, row = 0)
    label1 = Label(root, text = 'userID : ')
    label1.grid(column = 0, row = 0, sticky = E)

    entry2 = Entry(root)
    entry2.grid(column = 1, row = 1)
    label2 = Label(root, text = 'Site Code :')
    label2.grid(column = 0, row = 1, sticky = E)

    entry3 = Entry(root)
    entry3.grid(column = 1, row = 2)
    label3 = Label(root, text = 'First Name :')
    label3.grid(column = 0, row = 2, sticky = E)

    entry4 = Entry(root)
    entry4.grid(column = 1, row = 3)
    label4 = Label(root, text = 'Last Name :')
    label4.grid(column = 0, row = 3, sticky = E)

    #selected = IntVar()
    label5 = Label(root, text = 'Need Specific Number? :')
    label5.grid(column = 0, row = 4, sticky = E)

    rad1 = Radiobutton(root,text='Yes', value = 1, command = enableSPNum)
    rad2 = Radiobutton(root,text='No (Default)', value = 2, command = disableSPNum)
    rad1.grid(column = 1, row = 4)
    rad2.grid(column = 2, row = 4)

    entry5 = Entry(root, state = 'disabled')
    entry5.grid(column = 1, row = 6)
    label6 = Label(root, text = 'Extension :')
    label6.grid(column = 0, row = 6, sticky = E)

    label7 = Label(root, text = 'Voicemail Required? :')
    label7.grid(column = 0, row = 7, sticky = E)

    select1 = IntVar()
    rad3 = Radiobutton(root,text='Yes', value = 3, variable = select1)
    rad4 = Radiobutton(root,text='No', value = 4, variable=select1)
    rad3.grid(column = 1, row = 7)
    rad4.grid(column = 2, row = 7)

    entry7 = Entry(root)
    entry7.grid(column = 1, row = 8)
    label8 = Label(root, text = 'Your userID :')
    label8.grid(column = 0, row = 8, sticky = E)

    label9 = Label(root, text = 'Want to send email with differnt email adrress? :')
    label9.grid(column = 0, row = 9, sticky = E)

    #selected = IntVar()
    rad5 = Radiobutton(root,text='Yes', value = 5, command = diffEmail)
    rad6 = Radiobutton(root,text='No', value = 6, command = defaultEmail)
    rad5.grid(column = 1, row = 9)
    rad6.grid(column = 2, row = 9)

    entry8 = Entry(root, state = 'disabled')
    entry8.grid(column = 1, row = 10)
    label10 = Label(root, text = 'Full Email Address :')
    label10.grid(column = 0, row = 10, sticky = E)

    btn = Button(root, text = 'Submit', command = submitReq)
    btn.grid(column = 2, row = 20)



mainMenu = Menu(root)
root.configure(menu=mainMenu)
guiMenu = Menu(mainMenu, tearoff = 0)
mainMenu.add_cascade(label = 'TEST', menu=guiMenu)
guiMenu.add_command(label = 'TEST', command = guiUDP)
root.mainloop()
root.geometry('600x600')

person chun xu    schedule 11.11.2018    source источник
comment
Отступ нарушен в коде. Пожалуйста, попробуйте исправить это.   -  person Bryan Oakley    schedule 12.11.2018
comment
Привет Брайан, код был изменен   -  person chun xu    schedule 12.11.2018


Ответы (1)


Вы не присвоили переменную первому и третьему ряду радиокнопок. Если я опрашиваю радиокнопки без переменной, они говорят, что привязаны к selectedButton, что одинаково для всех из них. Я предполагаю, что это какое-то поведение по умолчанию, когда переменная отсутствует. Если вы создадите переменную для каждой из строк связанных радиокнопок и назначите ее им, эффект исчезнет.

person figbeam    schedule 12.11.2018