Python Tkinter var.get()在撤消主根时不会获得值

时间:2017-01-02 20:24:10

标签: python tkinter tk

我退出主根并在其上面调用新的根后,从单选按钮获取值时遇到问题。当我摧毁主根时,它正在工作,但由于我需要再次使用该根,我无法摧毁它!

代码当前没有工作,因为我无法获得继续工作的价值。 如果你需要简单的版本,你可以问我,我会添加它而不是这个。

提取元素周期表以打开新窗口以启动一个小工具。

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

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

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

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

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

问题和答案我用来随机生成quizz中的问题,以及一个问题列表和正确的答案,以便稍后与答案进行比较。

pitanjaprava=["Koji simbol se koristi za Vodik?","Koji je atomski broj Natrija?","U kojem agregatnom stanju se nalazi Helij?"]
pitanja=["Koji simbol se koristi za Vodik?","Koji je atomski broj Natrija?","U kojem agregatnom stanju se nalazi Helij?"]
pitiodg=[["Koji simbol se koristi za vodik?","H"],["Koji je atomski broj Natrija?","11"],["U kojem agregatnom stanju se nalazi Helij?","Plinovito"]]
odgovori=[["H"],["V"],["W"]],[["11"],["3"],["19"]],[["Kruto"],["Tekuće"],["Plinovito"]]

改组问题和答案,以便每次都不会以相同的顺序出现

def kviz1():
  global R1,R2,R3,var,p1,x,brojac
  brojac=0
  x=0
  random.shuffle(pitanja)
  random.shuffle(odgovori[0])
  random.shuffle(odgovori[1])
  random.shuffle(odgovori[2])

每当他问一个问题时,他会检查是否正确,如果是正确的反击,或者在我的情况下" brojac"将增加一个。如果没有问题,他将结束循环并用问题填写该空列表并撤回新的顶级根并回调主根并显示已达到的点数!

while x < 2:
    if len(pitanja) == 0:
        x=2
        root.deiconify()
        top.withdraw()
        pitanja.extend(pitanjaprava)
        tkMessageBox.showinfo\
        ("Rezultat","Ostvareni broj bodova = %s" % brojac)

    elif pitanja[0] == "Koji simbol se koristi za Vodik?":
        var=IntVar()
        p1=Label(top, text="Koji simbol se koristi za Vodik?").grid(row=3,column=0,columnspan=4)
        R1 = Radiobutton(top, text=odgovori[0][0], variable=var, value=1,command=odg_uzmi).grid(row=5,column=0)
        R2 = Radiobutton(top, text=odgovori[0][1], variable=var, value=2,command=odg_uzmi).grid(row=6,column=0)
        R3 = Radiobutton(top, text=odgovori[0][2], variable=var, value=3,command=odg_uzmi).grid(row=7,column=0)

        submit1=Button(top,text="Odgovori",command=lambda:kv1(root,odg_uzmi)).grid(row=8,column=1)
        x=x+1



    elif pitanja[0] == "Koji je atomski broj Natrija?":
        var=IntVar()
        p2=Label(top, text="Koji je atomski broj Natrija?").grid(row=3,column=0,columnspan=4)
        R1 = Radiobutton(top, text=odgovori[1][0], variable=var, value=1,command=odg_uzmi).grid(row=5,column=0)
        R2 = Radiobutton(top, text=odgovori[1][1], variable=var, value=2,command=odg_uzmi).grid(row=6,column=0)
        R3 = Radiobutton(top, text=odgovori[1][2], variable=var, value=3,command=odg_uzmi).grid(row=7,column=0)

        submit1=Button(top,text="Odgovori",command=lambda:kv2(root,odg_uzmi)).grid(row=8,column=1)
        x=x+1

    elif pitanja[0] == "U kojem agregatnom stanju se nalazi Helij?":
        var=IntVar()   
        p2=Label(top, text="U kojem agregatnom stanju se nalazi Helij?").grid(row=3,column=0,columnspan=4)
        R1 = Radiobutton(top, text=odgovori[2][0], variable=var, value=1,command=odg_uzmi).grid(row=5,column=0)
        R2 = Radiobutton(top, text=odgovori[2][1], variable=var, value=2,command=odg_uzmi).grid(row=6,column=0)
        R3 = Radiobutton(top, text=odgovori[2][2], variable=var, value=3,command=odg_uzmi).grid(row=7,column=0)

        submit1=Button(top,text="Odgovori",command=lambda:kv3(root,odg_uzmi)).grid(row=8,column=1)
        x=x+1
        brojac=brojac+1

def odg_uzmi():
  global odg_uzmi
  odg_uzmi=var.get()
  print odg_uzmi

def kv1(root,odgovor):
   if odgovor == pitiodg[0][1]:
      brojac=brojac+1
   del pitanja[0]
   return kviz1()


def kv2(root,odgovor):
   if odgovor == pitiodg[1][1]:
     brojac=brojac+1
   del pitanja[0]
   return kviz1()

def kv3(root,odgovor):
   if odgovor == pitiodg[2][1]:
     brojac=brojac+1
   del pitanja[0]
   return kviz1()`

我正在努力让它发挥作用并最终完全丢失代码。如果你能解决我var.get()部分,那么我可以获得价值并与列表中的问题和正确的答案进行比较,看看用户是对还是错,我会非常感激。

代码的简单版本仍然无法正常工作,我尝试用单选按钮分隔网格,不会工作!

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

  else:
     print brojac


  p1=Label(top, text="Koji je atomski broj Natrija?").grid(row=2,column=0,columnspan=4)
  R1a = Radiobutton(top, text="3", variable=var, value=4).grid(row=3,column=0)
  R2a = Radiobutton(top, text="11", variable=var, value=5).grid(row=4,column=0)
  R3a = Radiobutton(top, text="19", variable=var, value=6).grid(row=5,column=0)

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

def kv2():
  global odgovor,brojac
  odgovor = var.get()
  if odgovor == 5:
     brojac=brojac+1
     print brojac
  else:
     print brojac

0 个答案:

没有答案