Python var.get() wont get value from radiobutton when main root is withdrawn

68 Views Asked by At

I have Periodic table of elements placed on main root and since Im withdrawing it to open the quiz window. My problem is that when I'm trying to get value from var.get(), it constantly is giving me 0 and wont get true value. Here's the simple code that goes after I withdraw main root.

def prozor():
  global top,brojac
  brojac=0
  root.withdraw()
  top=Tk()
  top.title("Provjera znanja")
  p1=Label(top, text="Provjera znanja").grid(row=0,column=0,columnspan=4)
  provjera1=Button(top,text="Provjera znanja za\nprvi stupac   elemenata",command=lambda:kviz1()).grid(row=1,column=0)

  provjera2=Button(top,text="Provjera znanja za\ndrugi stupac elemenata",command=lambda:kviz1()).grid(row=1,column=1)

  provjera3=Button(top,text="Provjera znanja za\ntreci stupac elemenata",command=lambda:kviz1()).grid(row=1,column=2)

  provjera4=Button(top,text="Provjera znanja za\ncetvrti stupac elemenata",command=lambda:kviz1()).grid(row=1,column=3)

  provjera5=Button(top,text="Provjera znanja za\npeti stupac elemenata",command=lambda:kviz1()).grid(row=1,column=4) 



def kviz1():
  global R1,R2,R3,R1a,R2a,R3a,var,odgovor
  var= IntVar()
  p1=Label(top, text="Koji simbol se koristi za Vodik?").grid(row=2,column=0,columnspan=4)
  R1 = Radiobutton(top, text="W", variable=var, value=1).grid(row=3,column=0)
  R2 = Radiobutton(top, text="V", variable=var, value=2).grid(row=4,column=0)
  R3 = Radiobutton(top, text="H", variable=var, value=3).grid(row=5,column=0)


 submit1=Button(top,text="Odgovori",command=lambda:kv1()).grid(row=6,column=1)

def kv1():
  global brojac,odgovor
  odgovor=var.get()
  if odgovor == 3:
    brojac=brojac+1
    print brojac

I tried to separate grid from radio buttons, but its not working I just need that value from var.get() so I can compare user's selected answer with correct answer. Thanks in advance! I tried globaling var aswell.

1

There are 1 best solutions below

1
On BEST ANSWER

You can't have more than one instance of Tk. If you need more windows, create instances of Toplevel. Each instance of Tk has its own internal namespace for widgets, events, variables, etc.