Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter var.get()赢得';提取主根时,无法获取值_Python_Tkinter_Tk - Fatal编程技术网

Python Tkinter var.get()赢得';提取主根时,无法获取值

Python Tkinter var.get()赢得';提取主根时,无法获取值,python,tkinter,tk,Python,Tkinter,Tk,我在从单选按钮中获取值时遇到问题,因为我提取了主根并调用了它上面的新根。当我销毁主根目录时,它正在工作,但由于我以后需要再次使用该根目录,所以无法销毁它 代码当前不起作用,因为我无法获取值以继续使用它。 如果你需要这个简单的版本,你可以问我,我会添加它而不是这个 提取元素周期表以打开新窗口开始测验 def prozor(): global top root.withdraw() top=Tk() top.title("Provjera znanja")

我在从单选按钮中获取值时遇到问题,因为我提取了主根并调用了它上面的新根。当我销毁主根目录时,它正在工作,但由于我以后需要再次使用该根目录,所以无法销毁它

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

提取元素周期表以打开新窗口开始测验

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) 
    
  
问题和答案我用来在测验中随机生成问题,以及一个问题和正确答案列表,以便稍后与答案进行比较

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=Widget(…).grid(…)
,因为
grid()将
None
分配给
var
。您必须分两步执行:
var=Widget(…)
var.grid(…)
您是否在console/terminal/cmd.exe/powershell中运行以查看是否没有错误消息?如果您收到错误消息,那么您应该对此提出质疑。完整错误消息-从word
Traceback
@furas开始,如果在cmd中运行,我不会收到错误消息,但我会尝试将小部件和网格分开,然后我会向您发送有关结果的消息!谢谢您的时间。@furas您能检查一下简单版本的代码吗?
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