问题描述
我正在尝试运行以下代码,但这同时给了我两个条件值,即“是”和“否”。我正在尝试通过下拉列表在tkinter中做到这一点-
import tkinter as tk
Classi = "X","Y","Z"
subclassi = "A","B","C"
root = tk.Tk()
canvas = tk.Canvas(root,height = 500,width = 500,bg='white')
canvas.pack()
tkClassi = tk.StringVar(root)
tkClassi.set("Choose")
tksub = tk.StringVar(root)
tksub.set("Dg")
popupMenu1 = tk.OptionMenu(canvas,tkClassi,*Classi)
popupMenu1.pack()
popupMenu2 = tk.OptionMenu(canvas,tksub,*subclassi)
popupMenu2.pack()
def resu():
if Classi[0] and subclassi[0]:
print('Value is P')
if Classi[0] and subclassi[1]:
print("Value is Q")
myButton= tk.Button(root,text='Result',command=resu).pack()
root.mainloop()
解决方法
为什么在if语句后不使用elif
这将首先检查语句,如果语句不正确,则将转到elif语句,否则将结束
我认为您想这样做
import tkinter as tk
Classi = "X","Y","Z"
subclassi = "A","B","C"
root = tk.Tk()
canvas = tk.Canvas(root,height = 500,width = 500,bg='white')
canvas.pack()
tkClassi = tk.StringVar(root)
tkClassi.set("Choose")
tksub = tk.StringVar(root)
tksub.set("Dg")
global popupMenu1,popupMenu2
popupMenu1 = tk.OptionMenu(canvas,tkClassi,*Classi)
popupMenu1.pack()
popupMenu2 = tk.OptionMenu(canvas,tksub,*subclassi)
popupMenu2.pack()
def resu():
if tkClassi.get()==Classi[0] and tksub.get()==subclassi[0]:
print('Value is P')
elif tkClassi.get()==Classi[0] and tksub.get()==subclassi[1]:
print("Value is Q")
else:
print("Value is R")
myButton= tk.Button(root,text='Result',command=resu).pack()
root.mainloop()
,
我不确定100%是因为我不熟悉tkinter,但我认为它会打印“是”和“否”,因为两次if语句完全相同。
,您可以创建tk.Label()
来显示您的状态
import tkinter as tk
Classi = "X",bg='white')
canvas.pack()
tkClassi = tk.StringVar(root)
tkClassi.set("Choose")
tksub = tk.StringVar(root)
tksub.set("Dg")
status=tk.StringVar(root)
global popupMenu1,*subclassi)
popupMenu2.pack()
Status=tk.Label(canvas,text="None",textvariable=status)
Status.pack()
status.set('None')
def resu():
if tkClassi.get()==Classi[0] and tksub.get()==subclassi[0]:
print('Value is P')
status.set('Value is P')
elif tkClassi.get()==Classi[0] and tksub.get()==subclassi[1]:
print("Value is Q")
status.set('Value is Q')
else:
print("Value is R")
status.set('Value is R')
myButton= tk.Button(root,command=resu).pack()
root.mainloop()