我想知道是否有更好的写法。下面所述的当前代码有效。我只是想知道是否有更好的方法。
这是为了验证。因此,if 语句检查所有必填字段,如果它们可以接受,则它会进入执行代码。问题开始是因为
的输入字段
self.text_fmax
未被接受为整数。所以这个特定字段,首先检查是否为空然后忽略,如果不是则该值必须是 0 到 180 之间的整数。
def call_back(self):
if len(self.text_n.get()) == 0:
tkMessageBox.showinfo("Mandatory Information", "Please input an integer value for Number of Tessellations Cells")
elif len(self.text_id.get()) == 0:
tkMessageBox.showinfo("Mandatory Information", "Please input an integer value for Tessellation Identifier")
elif len(domain_container) == 0:
tkMessageBox.showinfo("Mandatory Information", "Please input Domain")
elif len(self.text_fmax.get()) != 0:
a = int(self.text_fmax.get())
if a < 0 or a > 180:
tkMessageBox.showinfo("Incorrect Value", "Face Flatness should be less than 180")
elif len(filename4) == 0:
tkMessageBox.showinfo("Mandatory Information", "Please input Output File Name")
else:
self.execute_neper_code()
elif len(filename4) == 0:
tkMessageBox.showinfo("Mandatory Information", "Please input Output File Name")
else:
self.execute_neper_code()
最佳答案
如果您想避免重复的代码和字符串,可以尝试以下方法。 下面不是完整的代码,而是简单的示例。 t_msgs 字典中的键表示要验证的字段和要验证的值(可以是范围)。
def call_back(self):
t_msgs = {"mdt": "Mandatory Information",
"incrt_val" :"Incorrect Value"}
checkFields = {(self.text_n, 0):
(t_msgs["mdt"],
"Please input an integer value for Number of Tessellations Cells"),
(self.text_id, 0):
(t_msgs["mdt"],
"Please input an integer value for Tessellation Identifier"),
(domain_container, 0):
(t_msgs["mdt"],
"Please input Domain"),
(self.text_fmax, range(0, 181, 180)):
(t_msgs["incrt_val"],
"Face Flatness should be less than 180"),
(len(filename4), 0):
(t_msgs["mdt"],
"Please input Output File Name")}
for field in checkFields:
if not field[1]:
tkMessageBox.showinfo(checkFields[field][0], checkFields[field][1])
else:
if not (field[1][0] < field[0].get() < field[1][1]):
tkMessageBox.showinfo(checkFields[field[0]], checkFields[field][1])
关于python - IF-ELIF 语句嵌套,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35786068/