2015-06-21 106 views
1

我创建了一个IntVar()this.v. 当this.v = 1时,我的elif语句是正确的,不应该如此。 我做错了什么? 当我打印(this.v.get())返回的值是1。 (进口Tkinter的)如何正确更改Radiobutton的值?

this.v = IntVar() 
this.button1 = Radiobutton(this.root,text = "Small Boxes First",variable = this.v,value = 1) 
this.button1.grid(row = 2,column = 5) 
this.button2 = Radiobutton(this.root,text = "Large Boxes First",variable = this.v,value = 2) 
this.button2.grid(row = 3,column = 5) 

def packNSaveClicked(this): 
     if(int(this.wid.get()) <= 0 or int(this.len.get()) <= 0 or this.len.get() == '' or this.wid.get() == ''): 
      messagebox.showerror("Truck Size Error", "The length or width of the Truck is not a valid value!") 
     elif(int(this.v.get()) != 1 or int(this.v.get()) != 2): 
      #ALWAYS SHOWING UP, even though print statement prints out 1 or 2 
      print(this.v.get()) 
      messagebox.showerror("Packing Error", "Pack algorithm not selected!") 
     else: 
      ...(this code not relevant) 
+0

请添加使用的GUI工具包和定义“不工作”你可能要付出更多的他们,使他们的工作... – Olaf

+0

什么发生的事情是,elif的语句运行时,它不应该是。当我打印“v”的值是1或2时,但elif语句反正运行。我使用tkinter,我将编辑指定 – Shan

+0

应该更新,让我仔细检查。 – Shan

回答

1

elif将总是触发,作为一个变量不能为!= 1!=2在同一时间!

这不是一个“语义错误”,而是由程序员逻辑错误。

0

当你说“这样做,如果x不是1,或做这一点,如果x不2“,它会一直运行。考虑下面的值:

  • 0(零):它不为1,所以elif的测试通过
  • 1(一):它是一个,但它是它不为2,所以elif的测试通过
  • 2(二):它不为1,所以elif的测试通过
  • 3(三):它不为1,所以elif的测试通过