我的代码遇到了一些问题.如果值不在0-255之间,我希望我的代码弹出一个消息框,但它不起作用.我现在只是使用c> 255进行故障排除,但我不知道问题似乎是什么.即使它的c> 255,它仍然会在值低于255时显示消息框.有人能告诉我我做错了什么:\
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"
Run Code Online (Sandbox Code Playgroud)
self.c不是数字而是字符串,字符串总是大于任何数字(参见此处有关此比较的说明).
尝试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")
Run Code Online (Sandbox Code Playgroud)
self.clicked_wbbalance()
在Python3中,这种不同的类型比较会引发一个TypeError.