Переключатель Tkinter на TopLevel не возвращает значение - PullRequest
0 голосов
/ 16 февраля 2019

В моем приложении 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()

1 Ответ

0 голосов
/ 16 февраля 2019

Все, что вам нужно, это привязать обратный вызов к вашим переключателям в вашем классе 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)
...