童车;如果c>;255“;关于Python Tkinter的语句

童车;如果c>;255“;关于Python Tkinter的语句,python,tkinter,Python,Tkinter,我的代码遇到一些问题。。 如果值不在0-255之间,但不起作用,我希望代码弹出一个消息框。我现在只是用c>255进行故障排除,但我不知道问题是什么。即使它的c>255,当值小于255时,它仍然显示messagebox。有人能告诉我我做错了什么吗:\ def clicked_wbbalance(self): self.top = Toplevel() self.top.title("LASKJDF...") Label(self.top, text="Enter low

我的代码遇到一些问题。。 如果值不在0-255之间,但不起作用,我希望代码弹出一个消息框。我现在只是用c>255进行故障排除,但我不知道问题是什么。即使它的c>255,当值小于255时,它仍然显示messagebox。有人能告诉我我做错了什么吗:\

  def clicked_wbbalance(self):
    self.top = Toplevel()
    self.top.title("LASKJDF...")
    Label(self.top, text="Enter low level").grid(row=0, column=0,padx=10)
    Label(self.top, text="Enter high level").grid(row=1, column=0,padx=10)
    Label(self.top, text="Values must be between 0 to 255").grid(row=3, column=0)


    self.a = Entry(self.top)
    self.b = Entry(self.top)
    self.a.grid(row=0, column=1,padx=10)
    self.b.grid(row=1, column=1,padx=10)
    Button(self.top, text="Ok", command=self.get).grid(row=3, column = 1)



def get(self):
    self.c = self.a.get()
    self.d = self.b.get()
    if self.c > 255:
        tkMessageBox.showerror("Error", "Please enter a value between 0-255")
        self.clicked_wbbalance()
    else:
        print "asdfasd"

self.c
不是一个数字,而是一个字符串,字符串总是大于任何数字(cf)

在比较之前,尝试将
self.c
转换为int:

try:
    c_as_int = int(self.c)
except ValueError:
    tkMessageBox.showerror("Error", "Please enter a value between 0-255")
    self.clicked_wbbalance()
else:
    if c_as_int > 255:
        tkMessageBox.showerror("Error", "Please enter a value between 0-255")
self.clicked_wbbalance()


在Python3中,这种不同类型的比较将引发一个
类型错误
self.c
不是一个数字而是一个字符串,字符串总是大于任何数字(cf)

在比较之前,尝试将
self.c
转换为int:

try:
    c_as_int = int(self.c)
except ValueError:
    tkMessageBox.showerror("Error", "Please enter a value between 0-255")
    self.clicked_wbbalance()
else:
    if c_as_int > 255:
        tkMessageBox.showerror("Error", "Please enter a value between 0-255")
self.clicked_wbbalance()


在Python3中,这种不同类型的比较将引发
TypeError

Entry类的方法get做什么?也许它返回的是字符串而不是int?我们必须看到
条目
类,或者至少是
get()
方法返回什么Entry类的get方法做什么?可能它返回的是字符串而不是int?我们必须查看
条目
类,或者至少查看
get()
方法返回的内容。这就是问题所在,它是字符串:)非常感谢!我知道了,我还有一个问题。如果输入的值不是整数,我想显示'tkMessageBox.batherror(“Error2”,“请输入一个介于0-255之间的值”)`是否有办法做到这一点?如果值不是整数表示,您将从
int()
获得
ValueError
。因此,在将字符串转换为整数时只需使用try/except块。@user1730056:正如JamesHenstridge提到的,我添加了try/except ValueError语句。是的,这就是问题所在,它是一个字符串:)非常感谢!我知道了,我还有一个问题。如果输入的值不是整数,我想显示'tkMessageBox.batherror(“Error2”,“请输入一个介于0-255之间的值”)`是否有办法做到这一点?如果值不是整数表示,您将从
int()
获得
ValueError
。因此,在将字符串转换为整数时,只需使用try/except块。@user1730056:正如JamesHenstridge提到的,我添加了try/except ValueError语句。