मैं एक ऐप बना रहा हूं जो यात्रा व्यय प्रबंधक के रूप में कार्य करता है। मैं वर्तमान में एक ऐसी प्रणाली बनाने की कोशिश कर रहा हूं जिसमें आप MDTextField पर अनुरोधित राशि डालें और अनुरोध की पुष्टि करने के लिए एक बटन दबाएं। साथ ही, अन्य विजेट पर मैं अनुरोध की गई कुल राशि को जोड़ना चाहता हूं। यहां छवि विवरण दर्ज करें

यानी अगर मैं टेक्स्टफिल्ड पर 1000 लिखता हूं और 'इनग्रेसर गैस्टो' बटन पर क्लिक करता हूं तो 'मॉन्टो टोटल सॉलिसिटाडो' लेबल के नीचे का मान अपडेट होना चाहिए और मूल संख्या के साथ लक्ष्य MDTextField और MDTextField दोनों का सही ढंग से $ 1,000.00 तैयार होना चाहिए।

वही सभी विस्तार पैनलों के लिए सही होना चाहिए जिनमें मेरे पास समान विजेट हैं।

मैंने निम्नलिखित कोशिश की है:

विस्तार पैनल का किवी कोड:

<MyContentAliment>:
    adaptive_height: True
    MDBoxLayout:
        orientation:'horizontal'
        adaptive_height:True
        size_hint_x:self.width
        pos_hint: {"center_x":0.5, "center_y":0.5}
        spacing: dp(10)
        padding_horizontal: dp(10)
        MDLabel:
            text: 'Monto:'
            multiline: 'True'
            halign: 'center'
            pos_hint: {"x":0, "top":0.5}
            size_hint_x: 0.15
            font_style: 'Button'
            font_size: 19

        MDTextField:
            id: monto_aliment_viaje
            hint_text: 'Monto a solicitar'
            pos_hint: {"x":0, "top":0.5}
            halign: 'left'
            size_hint_x: 0.3
            helper_text: 'Ingresar el monto a solicitar'
            helper_text_mode: 'on_focus'
            write_tab: False
            required: True
            on_text:
                root.limit_currency()

        MDRaisedButton:
            id: boton_aliment_viaje
            pos_hint: {"x":0, "top":0.5}
            text:'Ingresar Gasto'
            on_release:
                root.sumar_gasto()

एमडीकार्ड का किवी कोड (लक्ष्य विजेट युक्त):

<TravelManagerWindow>:
    BoxLayout:
        size_hint:1,0.85
        pos_hint: {"center_x": 0.5, "center_y":0.37}
        adaptive_height:True
        height: self.minimum_height

        ScrollView:
            adaptive_height:True

            GridLayout:
                id: container
                size_hint_y: None
                cols: 1
                row_default_height: root.height*0.10
                height: self.minimum_height 

                MDBoxLayout:
                    adaptive_height: True
                    orientation: 'horizontal'
                    GridLayout:
                        id: panel_container
                        size_hint_x: 0.6
                        cols: 1
                        adaptive_height: True
            
                    MDBoxLayout:
                        size_hint_x: 0.05       
                    MDCard:
                        id: resumen_solicitud
                        size_hint: None, None
                        size: "250dp", "300dp"
                        pos_hint: {"top": 0.9, "center_x": .5}
                        elevation: 0.1

                        MDBoxLayout:
                            orientation: 'vertical'
                            canvas.before:
                                Color:
                                    rgba: 0.8, 0.8, 0.8, 1
                                Rectangle:
                                    pos: self.pos
                                    size: self.size
                            MDLabel:
                                text: 'Monto Total Solicitado'
                                font_style: 'Button'
                                halign: 'center'
                                font_size: (root.width**2 + root.height**2) / 15.5**4
                                size_hint_y: 0.2
                            MDSeparator:
                                height: "1dp"
                            MDTextField:
                                id: suma_solic_viaje
                                text: "$ 0.00"
                                bold: True
                                line_color_normal: app.theme_cls.primary_color
                                halign: "center"
                                size_hint_x: 0.8

अंतिम लेकिन कम से कम, पायथन कोड:

class TravelManagerWindow(Screen):
    viajeInicio = ObjectProperty(None)
    panel_container = ObjectProperty(None)
    travel_list = ObjectProperty(None)
    DateMDTextField = ObjectProperty(None)
    menu = ObjectProperty()

    # EXPANSION PANEL PARA SOLICITAR GV
    def set_expansion_panel(self):
        #FOOD PANEL
        self.ids.panel_container.add_widget(MDExpansionPanel(icon="food.png", 
                                     content=MyContentAliment(),
                                     panel_cls=MDExpansionPanelOneLine(
                                                 text="Alimentacion")))
        # CASETAS PANEL
        self.ids.panel_container.add_widget(MDExpansionPanel(
                               icon="casetas.png", 
                                     content=MyContentCasetas(),
                                           panel_cls=MDExpansionPanelOneLine(
                                                         text="Casetas")))
        # GAS PANEL
        self.ids.panel_container.add_widget(MDExpansionPanel(icon="gas.png", 
                          content=MyContentGasolina(),
                                panel_cls=MDExpansionPanelOneLine(
                                                         text="Gasolina")))
        # HOSPEDAJE PANEL
        self.ids.panel_container.add_widget(MDExpansionPanel(
                 icon="hospedaje.png", content=MyContentHosped(),                                                         
                                 panel_cls=MDExpansionPanelOneLine(
                                                         text="Hospedaje")))
        # VARIOS PANEL
        self.ids.panel_container.add_widget(MDExpansionPanel(
                icon="varios.png", content=MyContentVarios(),                                                  
                        panel_cls=MDExpansionPanelOneLine(
                                                         text="Varios")))

सभी पैनल कंटेनरों का एक ही कोड होता है, केवल अलग-अलग विजेट के संदर्भ में (सरलता के लिए नहीं जोड़े गए थे)

class MyContentAliment(BoxLayout):
    def apply_currency_format(self):
        # if len <= 3
        if len(self.ids.monto_aliment_viaje.text) <= 3 and 
                (self.ids.monto_aliment_viaje.text).isnumeric():
            self.ids.monto_aliment_viaje.text = "$" + self.ids.monto_aliment_viaje.text + '.00'
        # n,nnn
        elif len(self.ids.monto_aliment_viaje.text) == 4 and 
                (self.ids.monto_aliment_viaje.text).isnumeric():
            self.ids.monto_aliment_viaje.text = "$" + self.ids.monto_aliment_viaje.text[0] + "," + \
                                            self.ids.monto_aliment_viaje.text[1:] + '.00'
        # nn,nnn
        elif len(self.ids.monto_aliment_viaje.text) == 5 and 
                (self.ids.monto_aliment_viaje.text).isnumeric():
            self.ids.monto_aliment_viaje.text = "$" + self.ids.monto_aliment_viaje.text[:2] + "," + \
                                            self.ids.monto_aliment_viaje.text[2:] + '.00'

    def limit_currency(self):
        if len(self.ids.monto_aliment_viaje.text) > 5 and 
                self.ids.monto_aliment_viaje.text.startswith('$') == False:
            self.ids.monto_aliment_viaje.text = self.ids.monto_aliment_viaje.text[:-1]

    def sumar_gasto(self):
        if self.ids.monto_aliment_viaje.text == "":
            pass
        else:
            travel_manager = TravelManagerWindow()
            monto_total = float(travel_manager.ids.suma_solic_viaje.text[2:])
            monto_total += float(self.ids.monto_aliment_viaje.text)
            travel_manager.ids.suma_solic_viaje.text= "$ " + str(monto_total)
            self.apply_currency_format()

### WINDOW MANAGER ################################

class WindowManager(ScreenManager):
    pass

ScreenManager().add_widget(LoginWindow(name='login'))
ScreenManager().add_widget(CreateAccountWindow(name='create'))
ScreenManager().add_widget(MainWindow(name='main'))
ScreenManager().add_widget(IngActivWindow(name='ingActiv'))
ScreenManager().add_widget(CronogramaWindow(name='cronograma'))
ScreenManager().add_widget(TravelManagerWindow(name='travelManager'))
ScreenManager().add_widget(SoporteTecnicoWindow(name='soporteTecnico'))

class powerApp2(MDApp):
    pass

if __name__ == "__main__":
    powerApp2().run()

वर्तमान में मुझे apply_currency_format फ़ंक्शन के कारण सही प्रारूप मिलते हैं। फिर भी, जब मैं बटन दबाता हूं, तो लक्ष्य टेक्स्ट फ़ील्ड का मान अपरिवर्तित रहता है।

आपका अग्रिम रूप से बोहोत धन्यवाद।

न्यूनतम प्रतिलिपि प्रस्तुत करने योग्य उदाहरण के लिए कोड:

पायथन कोड:

from kivy.properties import ObjectProperty
from kivy.uix.screenmanager import ScreenManager, Screen
from kivymd.app import MDApp
from kivymd.uix.expansionpanel import MDExpansionPanel, MDExpansionPanelOneLine
from kivy.uix.boxlayout import BoxLayout


class MyContentAliment(BoxLayout):
    def apply_currency_format(self):
        # if len <= 3
        if len(self.ids.monto_aliment_viaje.text) <= 3 and self.ids.monto_aliment_viaje.text.isnumeric():
            self.ids.monto_aliment_viaje.text = "$" + self.ids.monto_aliment_viaje.text + '.00'
        # n,nnn
        elif len(self.ids.monto_aliment_viaje.text) == 4 and self.ids.monto_aliment_viaje.text.isnumeric():
            self.ids.monto_aliment_viaje.text = "$" + self.ids.monto_aliment_viaje.text[0] + "," + \
                                        self.ids.monto_aliment_viaje.text[1:] + '.00'
        # nn,nnn
        elif len(self.ids.monto_aliment_viaje.text) == 5 and self.ids.monto_aliment_viaje.text.isnumeric():
            self.ids.monto_aliment_viaje.text = "$" + self.ids.monto_aliment_viaje.text[:2] + "," + \
                                        self.ids.monto_aliment_viaje.text[2:] + '.00'

    def limit_currency(self):
        if len(self.ids.monto_aliment_viaje.text) > 5 and self.ids.monto_aliment_viaje.text.startswith('$') == False:
            self.ids.monto_aliment_viaje.text = self.ids.monto_aliment_viaje.text[:-1]

    def sumar_gasto(self):
        if self.ids.monto_aliment_viaje.text == "":
            pass
        else:
            travel_manager = TravelManagerWindow()
            monto_total = float(travel_manager.ids.suma_solic_viaje.text[2:])
            monto_total += float(self.ids.monto_aliment_viaje.text)
            travel_manager.ids.suma_solic_viaje.text = "$ " + str(monto_total)
            self.apply_currency_format()


class MyContentCasetas(BoxLayout):
    def apply_currency_format(self):
        # if len <= 3
        if len(self.ids.monto_casetas_viaje.text) <= 3 and self.ids.monto_casetas_viaje.text.isnumeric():
            self.ids.monto_casetas_viaje.text = "$" + self.ids.monto_casetas_viaje.text + '.00'
        # n,nnn
        elif len(self.ids.monto_casetas_viaje.text) == 4 and self.ids.monto_casetas_viaje.text.isnumeric():
            self.ids.monto_casetas_viaje.text = "$" + self.ids.monto_casetas_viaje.text[0] + "," + \
                                            self.ids.monto_casetas_viaje.text[1:] + '.00'
        # nn,nnn
        elif len(self.ids.monto_casetas_viaje.text) == 5 and self.ids.monto_casetas_viaje.text.isnumeric():
            self.ids.monto_casetas_viaje.text = "$" + self.ids.monto_casetas_viaje.text[:2] + "," + \
                                            self.ids.monto_casetas_viaje.text[2:] + '.00'

    def limit_currency(self):
        if len(self.ids.monto_casetas_viaje.text) > 5 and self.ids.monto_casetas_viaje.text.startswith('$') == False:
            self.ids.monto_casetas_viaje.text = self.ids.monto_casetas_viaje.text[:-1]


class MyContentGasolina(BoxLayout):
    def apply_currency_format(self):
        # if len <= 3
        if len(self.ids.monto_gas_viaje.text) <= 3 and self.ids.monto_gas_viaje.text.isnumeric():
            self.ids.monto_gas_viaje.text = "$" + self.ids.monto_gas_viaje.text + '.00'
        # n,nnn
        elif len(self.ids.monto_gas_viaje.text) == 4 and self.ids.monto_gas_viaje.text.isnumeric():
            self.ids.monto_gas_viaje.text = "$" + self.ids.monto_gas_viaje.text[0] + "," + \
                                        self.ids.monto_gas_viaje.text[1:] + '.00'
        # nn,nnn
        elif len(self.ids.monto_gas_viaje.text) == 5 and self.ids.monto_gas_viaje.text.isnumeric():
            self.ids.monto_gas_viaje.text = "$" + self.ids.monto_gas_viaje.text[:2] + "," + \
                                        self.ids.monto_gas_viaje.text[2:] + '.00'

    def limit_currency(self):
        if len(self.ids.monto_gas_viaje.text) > 5 and self.ids.monto_gas_viaje.text.startswith('$') == False:
            self.ids.monto_gas_viaje.text = self.ids.monto_gas_viaje.text[:-1]


class MyContentHosped(BoxLayout):
    def apply_currency_format(self):
        # if len <= 3
        if len(self.ids.monto_hosped_viaje.text) <= 3 and self.ids.monto_hosped_viaje.text.isnumeric():
            self.ids.monto_hosped_viaje.text = "$" + self.ids.monto_hosped_viaje.text + '.00'
        # n,nnn
        elif len(self.ids.monto_hosped_viaje.text) == 4 and self.ids.monto_hosped_viaje.text.isnumeric():
            self.ids.monto_hosped_viaje.text = "$" + self.ids.monto_hosped_viaje.text[0] + "," + \
                                           self.ids.monto_hosped_viaje.text[1:] + '.00'
        # nn,nnn
        elif len(self.ids.monto_hosped_viaje.text) == 5 and self.ids.monto_hosped_viaje.text.isnumeric():
            self.ids.monto_hosped_viaje.text = "$" + self.ids.monto_hosped_viaje.text[:2] + "," + \
                                           self.ids.monto_hosped_viaje.text[2:] + '.00'

    def limit_currency(self):
        if len(self.ids.monto_hosped_viaje.text) > 5 and self.ids.monto_hosped_viaje.text.startswith('$') == False:
            self.ids.monto_hosped_viaje.text = self.ids.monto_hosped_viaje.text[:-1]


class MyContentVarios(BoxLayout):
    def apply_currency_format(self):
        # if len <= 3
        if len(self.ids.monto_varios_viaje.text) <= 3 and self.ids.monto_varios_viaje.text.isnumeric():
            self.ids.monto_varios_viaje.text = "$" + self.ids.monto_varios_viaje.text + '.00'
        # n,nnn
        elif len(self.ids.monto_varios_viaje.text) == 4 and self.ids.monto_varios_viaje.text.isnumeric():
            self.ids.monto_varios_viaje.text = "$" + self.ids.monto_varios_viaje.text[0] + "," + \
                                           self.ids.monto_varios_viaje.text[1:] + '.00'
        # nn,nnn
        elif len(self.ids.monto_varios_viaje.text) == 5 and self.ids.monto_varios_viaje.text.isnumeric():
            self.ids.monto_varios_viaje.text = "$" + self.ids.monto_varios_viaje.text[:2] + "," + \
                                           self.ids.monto_varios_viaje.text[2:] + '.00'

    def limit_currency(self):
        if len(self.ids.monto_varios_viaje.text) > 5 and self.ids.monto_varios_viaje.text.startswith('$') == False:
            self.ids.monto_varios_viaje.text = self.ids.monto_varios_viaje.text[:-1]


class LoginWindow(Screen):
    pass

class TravelManagerWindow(Screen):
    panel_container = ObjectProperty(None)

    # EXPANSION PANEL PARA SOLICITAR GV
    def set_expansion_panel(self):
        # FOOD PANEL
        self.ids.panel_container.add_widget(MDExpansionPanel(icon="food", content=MyContentAliment(),
                                                         panel_cls=MDExpansionPanelOneLine(text="Alimentacion")))
        # CASETAS PANEL
        self.ids.panel_container.add_widget(MDExpansionPanel(icon="food", content=MyContentCasetas(),
                                                         panel_cls=MDExpansionPanelOneLine(text="Casetas")))
        # GAS PANEL
        self.ids.panel_container.add_widget(MDExpansionPanel(icon="food", content=MyContentGasolina(),
                                                         panel_cls=MDExpansionPanelOneLine(text="Gasolina")))
        # HOSPEDAJE PANEL
        self.ids.panel_container.add_widget(MDExpansionPanel(icon="food", content=MyContentHosped(),
                                                         panel_cls=MDExpansionPanelOneLine(text="Hospedaje")))
        # VARIOS PANEL
        self.ids.panel_container.add_widget(MDExpansionPanel(icon="food", content=MyContentVarios(),
                                                         panel_cls=MDExpansionPanelOneLine(text="Varios")))

### WINDOW MANAGER ################################


class WindowManager(ScreenManager):
    pass

ScreenManager().add_widget(LoginWindow(name='login'))
ScreenManager().add_widget(TravelManagerWindow(name='travelManager'))


class reprodExample(MDApp):
    def build(self):
        self.theme_cls.primary_palette = "Teal"
        return WindowManager()


if __name__ == "__main__":
    reprodExample().run()

केवी फ़ाइल के लिए कोड:

<WindowManager>:
    LoginWindow:
    TravelManagerWindow:

<LoginWindow>:
    MDRaisedButton:
        text: 'Enter'
        pos_hint: {'center_x': 0.5, 'center_y': 0.5}
        size_hint: None, None
        on_release:
            root.manager.transition.direction = 'up'
            root.manager.current = 'travelManager'

<TravelManagerWindow>:
    name:'travelManager'
    on_pre_enter: root.set_expansion_panel()

    BoxLayout:
        orientation: 'vertical'
        size_hint:1,0.85
        pos_hint: {"center_x": 0.5, "center_y":0.37}
        adaptive_height:True
        height: self.minimum_height

        ScrollView:
            adaptive_height:True

            GridLayout:
                size_hint_y: None
                cols: 1
                row_default_height: root.height*0.10
                height: self.minimum_height

                BoxLayout:
                    adaptive_height: True
                    orientation: 'horizontal'

                    GridLayout:
                        id: panel_container
                        size_hint_x: 0.6
                        cols: 1
                        adaptive_height: True

                    BoxLayout:
                        size_hint_x: 0.05
                    MDCard:
                        id: resumen_solicitud
                        size_hint: None, None
                        size: "250dp", "300dp"
                        pos_hint: {"top": 0.9, "center_x": .5}
                        elevation: 0.1

                        MDBoxLayout:
                            orientation: 'vertical'
                            canvas.before:
                                Color:
                                    rgba: 0.8, 0.8, 0.8, 1
                                Rectangle:
                                    pos: self.pos
                                    size: self.size
                            MDLabel:
                                text: 'Monto Total Solicitado'
                                font_style: 'Button'
                                halign: 'center'
                                font_size: (root.width**2 + root.height**2) / 15.5**4
                                size_hint_y: 0.2
                            MDSeparator:
                                height: "1dp"
                            MDTextField:
                                id: suma_solic_viaje
                                text: "$ 0.00"
                                bold: True
                                line_color_normal: app.theme_cls.primary_color
                                halign: "center"
                                size_hint_x: 0.8
                                pos_hint: {'center_x': 0.5, 'center_y': 0.5}
                            MDSeparator:
                                height: "1dp"
                            BoxLayout:
                                id: expense_graph
                                halign: 'center'

<MyContentAliment>:
    adaptive_height: True
    MDBoxLayout:
        orientation:'horizontal'
        adaptive_height:True
        size_hint_x:self.width
        pos_hint: {"center_x":0.5, "center_y":0.5}
        spacing: dp(10)
        padding_horizontal: dp(10)
        MDLabel:
            text: 'Monto:'
            multiline: 'True'
            halign: 'center'
            pos_hint: {"x":0, "top":0.5}
            size_hint_x: 0.15
            font_style: 'Button'
            font_size: 19

        MDTextField:
            id: monto_aliment_viaje
            hint_text: 'Monto a solicitar'
            pos_hint: {"x":0, "top":0.5}
            halign: 'left'
            size_hint_x: 0.3
            helper_text: 'Ingresar el monto a solicitar'
            helper_text_mode: 'on_focus'
            write_tab: False
            required: True
            on_text:
                root.limit_currency()

        MDRaisedButton:
            id: boton_aliment_viaje
            pos_hint: {"x":0, "top":0.5}
            text:'Ingresar Gasto'
            on_release:
                root.sumar_gasto()

### CASETAS
<MyContentCasetas>:
    adaptive_height: True
    MDBoxLayout:
        orientation:'horizontal'
        adaptive_height:True
        size_hint_x:self.width
        pos_hint: {"center_x":0.5, "center_y":0.5}
        spacing: dp(10)
        padding_horizontal: dp(10)
        MDLabel:
            text: 'Monto:'
            multiline: 'True'
            halign: 'center'
            pos_hint: {"x":0, "top":0.5}
            size_hint_x: 0.15
            font_style: 'Button'
            font_size: 19

        MDTextField:
            id: monto_casetas_viaje
            hint_text: 'Monto a solicitar'
            pos_hint: {"x":0, "top":0.5}
            halign: 'left'
            size_hint_x: 0.3
            helper_text: 'Ingresar el monto a solicitar'
            helper_text_mode: 'on_focus'
            write_tab: False
            #input_filter: 'float'
            required: True
            on_text:
                root.limit_currency()

        MDRaisedButton:
            id: boton_casetas_viaje
            pos_hint: {"x":0, "top":0.5}
            text:'Ingresar Gasto'
            on_release:
                root.apply_currency_format()

        BoxLayout:
            size_hint_x: 0.05

### GASOLINA
<MyContentGasolina>:
    adaptive_height: True
    MDBoxLayout:
        orientation:'horizontal'
        adaptive_height:True
        size_hint_x:self.width
        pos_hint: {"center_x":0.5, "center_y":0.5}
        spacing: dp(10)
        padding_horizontal: dp(10)
        MDLabel:
            text: 'Monto:'
            multiline: 'True'
            halign: 'center'
            pos_hint: {"x":0, "top":0.5}
            size_hint_x: 0.15
            font_style: 'Button'
            font_size: 19

        MDTextField:
            id: monto_gas_viaje
            hint_text: 'Monto a solicitar'
            pos_hint: {"x":0, "top":0.5}
            halign: 'left'
            size_hint_x: 0.3
            helper_text: 'Ingresar el monto a solicitar'
            helper_text_mode: 'on_focus'
            write_tab: False
            #input_filter: 'float'
            required: True
            on_text:
                root.limit_currency()

        MDRaisedButton:
            id: boton_gas_viaje
            pos_hint: {"x":0, "top":0.5}
            text:'Ingresar Gasto'
            on_release:
                root.apply_currency_format()

        BoxLayout:
            size_hint_x: 0.05

 ### HOSPEDAJE
<MyContentHosped>:
    adaptive_height: True
    MDBoxLayout:
        orientation:'horizontal'
        adaptive_height:True
        size_hint_x:self.width
        pos_hint: {"center_x":0.5, "center_y":0.5}
        spacing: dp(10)
        padding_horizontal: dp(10)
        MDLabel:
            text: 'Monto:'
            multiline: 'True'
            halign: 'center'
            pos_hint: {"x":0, "top":0.5}
            size_hint_x: 0.15
            font_style: 'Button'
            font_size: 19

        MDTextField:
            id: monto_hosped_viaje
            hint_text: 'Monto a solicitar'
            pos_hint: {"x":0, "top":0.5}
            halign: 'left'
            size_hint_x: 0.3
            helper_text: 'Ingresar el monto a solicitar'
            helper_text_mode: 'on_focus'
            write_tab: False
            #input_filter: 'float'
            required: True
            on_text:
                root.limit_currency()

    MDRaisedButton:
        id: boton_hosped_viaje
        pos_hint: {"x":0, "top":0.5}
        text:'Ingresar Gasto'
        on_release:
            root.apply_currency_format()

        BoxLayout:
            size_hint_x: 0.05

### VARIOS
<MyContentVarios>:
    adaptive_height: True
    MDBoxLayout:
        orientation:'horizontal'
        adaptive_height:True
        size_hint_x:self.width
        pos_hint: {"center_x":0.5, "center_y":0.5}
        spacing: dp(10)
        padding_horizontal: dp(10)
        MDLabel:
            text: 'Monto:'
            multiline: 'True'
            halign: 'center'
            pos_hint: {"x":0, "top":0.5}
            size_hint_x: 0.15
            font_style: 'Button'
            font_size: 19

        MDTextField:
            id: monto_varios_viaje
            hint_text: 'Monto a solicitar'
            pos_hint: {"x":0, "top":0.5}
            halign: 'left'
            size_hint_x: 0.3
            helper_text: 'Ingresar el monto a solicitar'
            helper_text_mode: 'on_focus'
            write_tab: False
            #input_filter: 'float'
            required: True
            on_text:
                root.limit_currency()

        MDRaisedButton:
            id: boton_varios_viaje
            pos_hint: {"x":0, "top":0.5}
            text:'Ingresar Gasto'
            on_release:
                root.apply_currency_format()

        BoxLayout:
            size_hint_x: 0.05
0
Diego Gc 2 अक्टूबर 2020, 19:15

1 उत्तर

सबसे बढ़िया उत्तर

आपकी sumar_gasto() विधि में पंक्ति:

travel_manager = TravelManagerWindow()

TravelManagerWindow का एक नया इंस्टेंस बना रहा है जो आपके GUI में प्रदर्शित इंस्टेंस से असंबंधित है। तो उस उदाहरण में आपके द्वारा किए गए किसी भी परिवर्तन का आपके GUI पर कोई प्रभाव नहीं पड़ेगा।

आपका अधिक कोड देखे बिना, मैं अनुमान नहीं लगा सकता कि आप TravelManagerWindow के उदाहरण तक कैसे पहुंच सकते हैं जो वास्तव में आपके GUI में है।

तो, या तो आप इसे अपने लिए समझ सकते हैं, या आप एक न्यूनतम, पूर्ण, सत्यापन योग्य उदाहरण पोस्ट कर सकते हैं।

तो, पोस्ट किए गए अतिरिक्त कोड के साथ, मुझे लगता है कि आप प्रतिस्थापित कर सकते हैं:

travel_manager = TravelManagerWindow()

साथ:

travel_manager = MDApp.get_running_app().root.get_screen('travelManager')

यह काम करता है क्योंकि MDApp का root विजेट WindowManager है।

आपको kv में LoginWindow के लिए एक name भी जोड़ना चाहिए:

<LoginWindow>:
    name: 'login'
    MDRaisedButton:
        text: 'Enter'
        pos_hint: {'center_x': 0.5, 'center_y': 0.5}
        size_hint: None, None
        on_release:
            root.manager.transition.direction = 'up'
            root.manager.current = 'travelManager'

मैंने यह भी देखा कि आपके पास कुछ अनावश्यक कोड हैं:

ScreenManager().add_widget(LoginWindow(name='login'))
ScreenManager().add_widget(TravelManagerWindow(name='travelManager'))

उपरोक्त पंक्तियों का कोई प्रभाव नहीं है, उसी कारण से जिस कारण travel_manager = TravelManagerWindow() कोड था। ScreenManager() को कॉल करने से ScreenManager का एक नया इंस्टेंस बनता है जो आपके GUI में नहीं है, और उस इंस्टेंस में Widget जोड़ने से आपके GUI पर कोई प्रभाव नहीं पड़ेगा। kv की शुरुआत में WindowManager के लिए नियम दो Screens का निर्माण करेगा और फिर WindowManager में जोड़ देगा।

1
John Anderson 6 अक्टूबर 2020, 02:05