在基维中从一个班级访问另一个班级的id

时间:2019-07-20 12:09:11

标签: python kivy

我想访问从main类到fahim2_pop类的ID。想要访问从textinput(在主类中)到弹出窗口小部件的单词,该窗口小部件将在有人按下搜索按钮时显示。当有人搜索“ hello”并按搜索按钮时,将出现弹出窗口小部件,并且在该弹出窗口小部件中,标签的文本将为“ hello”,与来自文本输入的相同。但标签和ID仍在不同的类中。怎么做?

python代码

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代码

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 

''')

1 个答案:

答案 0 :(得分:1)

由于main是应用程序的根目录,因此您可以使用TextInput从应用程序中的任何位置访问App.get_running_app().root.ids.word。因此,您可以通过在Popup中以以下方式使用它来在kv中获得它:

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

fahim2_pop可以很简单:

class fahim2_pop(Popup):
    pass