ashikuzzaman
ashikuzzaman

Reputation: 27

accessing id from one class to another class in kivy

i want to access an id from class main to class fahim2_pop. want to access to word from textinput(in main class) to the popup widget which will appear when someone press the search button. when someone search "hello" and press search button the the popup widget will appear and in that popup widget the text of the label will be "hello" same as from the textinput. but the label and the id remains in different class. how to do it?

python code

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
from kivy.uix.popup import Popup
from kivy.properties import *

class fahim2_pop(Popup):
    pass
class main(BoxLayout):  
    def word(self):
        pop=fahim2_pop()
        pop.open()

class CallApp(App):
    def build(self):
        return main()

CallApp().run()

kv code

Builder.load_string('''

<main>:
    BoxLayout:
        orientation:"vertical"
        TextInput:
            id:word
        Button:
            text:"search"
            on_press:root.word()

<fahim2_pop>:
    id:pop
    title:"result"
    BoxLayout:
        Label:
            text:app.root.ids.word.text 

''')

Upvotes: 0

Views: 2521

Answers (1)

John Anderson
John Anderson

Reputation: 38992

Since main is the root of your app, you can access the TextInput from anywhere in your app using App.get_running_app().root.ids.word. So, you can get this in your Popup by using it in your kv as:

<fahim2_pop>:
    id:pop
    title:"result"
    BoxLayout:
        Label:
            text:app.root.ids.word.text 

And you fahim2_pop can be simply:

class fahim2_pop(Popup):
    pass

Upvotes: 1

Related Questions