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