即使没有选择 Radiobutton 也不会显示错误消息 - 我的代码有什么问题?
No error message shows up even if no Radiobutton is selected - what's wrong with my code?
所以我有两个功能:
def Driver_Form():
canvas.delete("all")
root.configure(bg="cornflower blue")
canvas.config(width=root.winfo_screenwidth(), height=root.winfo_screenheight(),
bg="sky blue")
...
myvar1 = StringVar() #IntVar()
Male = Radiobutton(canvas, text = "Male", variable = myvar1, value = 1)
canvas.create_window(734, 265, window = Male, height = 25, width = 70)
Female = Radiobutton(canvas, text="Female", variable=myvar1, value = 2)
canvas.create_window(825, 265, window=Female, height=25, width=90)
Other = Radiobutton(canvas, text="Rather not say", variable=myvar1, value = 3)
canvas.create_window(940, 265, window=Other, height=25, width=120)
Next_button = Button(root, text="Next", anchor=CENTER, command=lambda: check_Driver(FName_Entry, LName_Entry,
day_combobox, month_combobox,
year_combobox, myvar1, Email_Entry, Phone_Entry))
Next_button.configure(width=10, bg="black", fg="blue", border=10)
canvas.create_window(920, 450, anchor=NW, window=Next_button)
Next_button
导致另一个功能:
def check_Driver(FName_Entry, LName_Entry, day_combobox, month_combobox, year_combobox, myvar1, Email_Entry,
Phone_Entry, event=None):
...
if myvar1 != 1 or 2 or 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)
我正在尝试确保在单击男性、女性和其他单选按钮的 none 时显示错误消息。但是,我不知道出了什么问题,但它似乎不起作用,即使单击单选按钮的 none 也不会显示错误消息。
你至少有两个大问题。首先,myvar1
永远不会是 1、2 或 3,因为 myvar1
不是整数。它是 StringVar
的一个实例。因此,您需要更改的第一件事是您需要在 if
语句中使用 int(myvar1.get())
以便比较存储在变量中的值而不是 StringVar
的实例本身。
当你解决这个问题时,你会遇到另一个问题。 if myvar1 != 1 or 2 or 3
并没有按照您的想法行事。它在逻辑上与 if (myvar != 1) or (bool(2)) or (bool(3))
相同。由于 bool(2)
将始终 return True
,因此 if
语句的主体将始终 运行.
如果您想检查 myvar1
不是值 1、2 或 3 之一,您可以通过以下方式之一进行:
if int(myvar1.get()) not in (1, 2, 3):
-或-
value = int(myvar1.get())
if value != 1 and value != 2 and value != 3:
你的条件不对。你写的条件不检查值是1、2还是3,而是检查它是否不是1或者2和3是否是不同于0的数字。
要检查 myvar 是否不是 1、2 或 3,请使用:
if myvar1.get() not in [1, 2, 3]:
所以我有两个功能:
def Driver_Form():
canvas.delete("all")
root.configure(bg="cornflower blue")
canvas.config(width=root.winfo_screenwidth(), height=root.winfo_screenheight(),
bg="sky blue")
...
myvar1 = StringVar() #IntVar()
Male = Radiobutton(canvas, text = "Male", variable = myvar1, value = 1)
canvas.create_window(734, 265, window = Male, height = 25, width = 70)
Female = Radiobutton(canvas, text="Female", variable=myvar1, value = 2)
canvas.create_window(825, 265, window=Female, height=25, width=90)
Other = Radiobutton(canvas, text="Rather not say", variable=myvar1, value = 3)
canvas.create_window(940, 265, window=Other, height=25, width=120)
Next_button = Button(root, text="Next", anchor=CENTER, command=lambda: check_Driver(FName_Entry, LName_Entry,
day_combobox, month_combobox,
year_combobox, myvar1, Email_Entry, Phone_Entry))
Next_button.configure(width=10, bg="black", fg="blue", border=10)
canvas.create_window(920, 450, anchor=NW, window=Next_button)
Next_button
导致另一个功能:
def check_Driver(FName_Entry, LName_Entry, day_combobox, month_combobox, year_combobox, myvar1, Email_Entry,
Phone_Entry, event=None):
...
if myvar1 != 1 or 2 or 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)
我正在尝试确保在单击男性、女性和其他单选按钮的 none 时显示错误消息。但是,我不知道出了什么问题,但它似乎不起作用,即使单击单选按钮的 none 也不会显示错误消息。
你至少有两个大问题。首先,myvar1
永远不会是 1、2 或 3,因为 myvar1
不是整数。它是 StringVar
的一个实例。因此,您需要更改的第一件事是您需要在 if
语句中使用 int(myvar1.get())
以便比较存储在变量中的值而不是 StringVar
的实例本身。
当你解决这个问题时,你会遇到另一个问题。 if myvar1 != 1 or 2 or 3
并没有按照您的想法行事。它在逻辑上与 if (myvar != 1) or (bool(2)) or (bool(3))
相同。由于 bool(2)
将始终 return True
,因此 if
语句的主体将始终 运行.
如果您想检查 myvar1
不是值 1、2 或 3 之一,您可以通过以下方式之一进行:
if int(myvar1.get()) not in (1, 2, 3):
-或-
value = int(myvar1.get())
if value != 1 and value != 2 and value != 3:
你的条件不对。你写的条件不检查值是1、2还是3,而是检查它是否不是1或者2和3是否是不同于0的数字。
要检查 myvar 是否不是 1、2 或 3,请使用:
if myvar1.get() not in [1, 2, 3]: