顶层Tkinter单选按钮不返回值

顶层Tkinter单选按钮不返回值,tkinter,radio,Tkinter,Radio,在我的tkinter应用程序中,我有一个带有单选按钮的顶级窗口。当我选择任何一个单选按钮时,它不会返回任何值,也不会打印任何错误 下面是一个简单的例子: import tkinter from tkinter import * from tkinter import ttk class eventReg: def __init__(self, master): self.master = master self.drawBoard() def

在我的tkinter应用程序中,我有一个带有单选按钮的顶级窗口。当我选择任何一个单选按钮时,它不会返回任何值,也不会打印任何错误

下面是一个简单的例子:

import tkinter
from tkinter import *
from tkinter import ttk

class eventReg:
    def __init__(self, master):
        self.master = master
        self.drawBoard()

    def drawBoard(self):
         self.addButton = ttk.Button(self.master, text="Add New Registration", command=self.newRegistration)
         self.addButton.grid(row=1,column=1, sticky='w')

    def newRegistration(self):
        self.new_registration = tkinter.Toplevel(self.master)
        self.new_registration.geometry('700x450+300+200')
        self.radioVar = StringVar(master=self.new_registration)
        self.nr_radio1 = ttk.Radiobutton(self.new_registration, text="Provide Unique Code", value="provide unicode", variable = self.radioVar)
        self.nr_radio2 = ttk.Radiobutton(self.new_registration, text="Scan QR Code", value="scancode", variable=self.radioVar)
        self.nr_radio1.grid(row=2, column=1, padx=15, pady=15, sticky='n')
        self.nr_radio2.grid(row=2, column=2, padx=15, pady=15, sticky='n')

        if self.radioVar.get() == "provide unicode":
            self.test_Label = ttk.Label(self.new_registration, text="Working")
            self.test_Label.grid(row=2, column=4, padx=15, pady=15)


if __name__ == '__main__':
    master=Tk()
    eventReg(master)
    master.title('Event Registration Manager')
    master.mainloop()

您只需将回调绑定到
eventReg
类中的单选按钮

class eventReg:
    ...

    def newRegistration(self):
        ...
        self.radioVar = StringVar(master=self.new_registration)
        self.nr_radio1 = ttk.Radiobutton(self.new_registration, text="Provide Unique Code", value="provide unicode", variable = self.radioVar,command=self.get_var_value)
        self.nr_radio2 = ttk.Radiobutton(self.new_registration, text="Scan QR Code", value="scancode", variable=self.radioVar,command=self.get_var_value)
        ...

    def get_var_value(self):
        if self.radioVar.get() == "provide unicode":
            self.test_Label = ttk.Label(self.new_registration, text="Working")
            self.test_Label.grid(row=2, column=4, padx=15, pady=15)

您只需将回调绑定到
eventReg
类中的单选按钮

class eventReg:
    ...

    def newRegistration(self):
        ...
        self.radioVar = StringVar(master=self.new_registration)
        self.nr_radio1 = ttk.Radiobutton(self.new_registration, text="Provide Unique Code", value="provide unicode", variable = self.radioVar,command=self.get_var_value)
        self.nr_radio2 = ttk.Radiobutton(self.new_registration, text="Scan QR Code", value="scancode", variable=self.radioVar,command=self.get_var_value)
        ...

    def get_var_value(self):
        if self.radioVar.get() == "provide unicode":
            self.test_Label = ttk.Label(self.new_registration, text="Working")
            self.test_Label.grid(row=2, column=4, padx=15, pady=15)

您在创建变量后获得的值约为一毫秒。@BryanOakley我该怎么办?您在创建变量后获得的值约为一毫秒。@BryanOakley我该怎么办?