mercredi 13 janvier 2021

Only "else statement" shown when running app with python/kivy

I have been working on an app with Kivy that receives 0, 1 or 2 as text input by the user and a label on the final screen shows a text which should differ based on the received input. It does not present with any errors any longer, but the final screen will only show the "else" text ("Bad Luck") even when the requirements of the "if statement" are met.

By searching similar questions, I tried using an "input_filter" for integers in case it resolved the issue, but it didn't.

I am a beginner with no programming background, so please feel free to be as elaborate as you like in your answers. Thank you in advance for your time and any ideas/recommendations you may share. Following are the codes of the .py and .kv files:

.py file:

import kivy
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import NumericProperty, StringProperty, NumericProperty


class MainWindow(Screen):
    pass

class SecondWindow(Screen):
    pass

class ThirdWindow(Screen):
    pass

class FourthWindow(Screen):
    pass
    
    
class WindowManager(ScreenManager):
    pass


class MyApp(App):
    def build(self):
       
        kv = Builder.load_file("my.kv")
        return kv
        
     
    
if __name__=="__main__":
    MyApp().run()

.kv file:

WindowManager:
    MainWindow:
    SecondWindow:
    ThirdWindow:
    FourthWindow:
    

<MainWindow>:
    name: "main"
    GridLayout:
        cols:1
        rows:2
        Label:
            text: "stuff"
        Button:
            text: "stuff"
            on_release:
                app.root.current = "second"
                root.manager.transition.direction = "left"

<SecondWindow>:
    name: "second"
    GridLayout:
        cols:1
        rows:2

        GridLayout:
            cols:2
            Label:
                text: "stuff"
            TextInput:
                id: ti_a
                multiline:False
                
                
            Label:
                text: "stuff"
            TextInput:
                id: ti_b
                multiline:False
                

            Label:
                text: "stuff"
            TextInput:
                id: ti_c
                multiline:False
                

            Label:
                text: "stuff"
            TextInput:
                id: ti_d
                multiline:False
                

            Label:
                text: "stuff"
            TextInput:
                id: ti_e
                multiline:False
                

        GridLayout:
            cols:2 
        
            Button:
                text: "stuff"
                on_release:
                    app.root.current = "third"
                    root.manager.transition.direction = "left"
            Button:
                text: "Back"
                on_release:
                    app.root.current = "main"
                    root.manager.transition.direction = "right"

<ThirdWindow>:
    name: "third"
    GridLayout:
        cols:1
        rows:2

        GridLayout:
            cols:2
            Label:
                text: "stuff"
            TextInput:
                id: ti_f
                multiline:False
                

        GridLayout:
            cols:2

            Button:
                text: "stuff"
                on_release:
                    app.root.current = "fourth"
                    root.manager.transition.direction = "left"

            Button:
                text: "Back"
                on_release:
                    app.root.current = "second"
                    root.manager.transition.direction = "right"


<FourthWindow>:
    name: "fourth"
    Label:
        text: "Stuff" if root.manager.get_screen("second").ids.ti_a.text == "0" and root.manager.get_screen("second").ids.ti_b.text == "0" and root.manager.get_screen("second").ids.ti_c.text == "0" and root.manager.get_screen("second").ids.ti_d.text == "0" and root.manager.get_screen("second").ids.ti_e.text == "1" and root.manager.get_screen("third").ids.ti_f.text == "0" else "Bad Luck"

Aucun commentaire:

Enregistrer un commentaire