我的代码正在生成一条消息,即使在所有条件都已填充的情况下,它也不应该生成.怎么了


def check_Driver(FName_Entry, LName_Entry, day_combobox, month_combobox, year_combobox,
myvar1, Email_Entry, Phone_Entry, event=None):
FName = FName_Entry.get()
LName = LName_Entry.get()
Email = Email_Entry.get()
Number = Phone_Entry.get()
day = day_combobox.get()
month = month_combobox.get()
year = year_combobox.get()
length = len(Number)
if not FName.isalpha() and len(FName) != 0:
errormsg = Message(root, text='Enter a valid first name', anchor=CENTER,
bg="red", width=1000)
canvas.create_window(1020, 134, anchor=NW, window=errormsg)
# messagebox.showerror('Only letters', 'Only letters are allowed!')
if not LName.isalpha() and len(LName) != 0:
errormsg2 = Message(root, text='Enter a valid last name', anchor=CENTER,
bg="red", width=1000)
canvas.create_window(1020, 174, anchor=NW, window=errormsg2)
if not Number.isdigit() or length != 11 and length != 0:
errormsg5 = Message(root, text='Enter a valid phone number', anchor=CENTER,
bg="red", width=1000)
canvas.create_window(1020, 334, anchor=NW, window=errormsg5)
if not FName or LName or Email or Number or day or month or year:
error_blank = Message(root, text="Please don't leave any field/s blank",
anchor=CENTER, bg="red", width=1000)
canvas.create_window(600, 450, anchor=NW, window=error_blank)
if int(myvar1.get()) not in (1, 2, 3):
error_blank2 = Message(root, text="Please don't leave any field/s blank",
anchor=CENTER, bg="red", width=1000)
canvas.create_window(600, 450, anchor=NW, window=error_blank2)
if (FName.isalpha() and LName.isalpha() and Number.isdigit() and length == 11
and myvar1.get() in [1,2,3] and len(Email) != 0 and len(day) != 0
and len(month) != 0 and len(year) != 0):

根据该代码;请不要将任何字段留空";如果FNameLNameEmailNumberdaymonthyear为空,则应该生成,但当我完全填写表单时,它仍然会生成此消息,我无法继续前进。

是什么原因造成的?

if not FName or LName or Email or Number or day or month or year:

这需要在每个变量之前单独设置一个not。现在,它被解释为

if (not FName) or (LName) or (Email) . . .

因此,如果LNameEmail或其他任何一个为真,则整个条件将为,并显示错误。

你也可以否定all条件,而不是单独否定每一个条件,这可能会稍微干净一点:

if not all([FName, LName, Email, Number, day, month, year]):

这读起来也不错。

最新更新