微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

嵌套if语句赋予所有条件值

如何解决嵌套if语句赋予所有条件值

我正在尝试运行以下代码,但这同时给了我两个条件值,即“是”和“否”。我正在尝试通过下拉列表在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()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。