Kivy中多条件设置app.root.current仅最后一条生效问题求助
问题解决:Kivy按钮多条件判断仅最后一条生效的修复
你的问题出在连续赋值语句的覆盖逻辑:当前的两行app.root.current = ...是顺序执行的,不管第一行的条件是否成立,第二行都会执行并覆盖第一行的结果。比如即使第一个日期密码匹配,第二行因为不满足第二个条件,会把current重新设为"fourth",最终只有最后一条判断的结果会保留。
修复方案:改用if-elif-else分支判断
在Kivy的KV语言中支持多行条件分支,把逻辑改成按顺序判断的结构,这样只会执行第一个满足的分支,不会被后续语句覆盖:
Button: font_name: "Georgiai" font_size: 20 text: "Enter" size_hint: 0.5, 0.5 background_color: "#00FFCE" on_release: if date.text == "01.02.2023" and password.text == "Si": app.root.current = "fifth" elif date.text == "02.02.2023" and password.text == "te": app.root.current = "seis" else: app.root.current = "fourth"
逻辑说明
- 先检查第一个日期和密码的匹配条件,满足则切换到"fifth"窗口
- 若第一个不满足,再检查第二个匹配条件,满足则切换到"seis"窗口
- 两个条件都不满足时,默认切换到"fourth"窗口
这样就能按预期执行多条件判断,不会出现覆盖问题。
内容的提问来源于stack exchange,提问作者Kevin Castro
相关产品推荐
相关产品推荐

