Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在kivy中从一个类访问另一个类的id_Python_Kivy - Fatal编程技术网

Python 在kivy中从一个类访问另一个类的id

Python 在kivy中从一个类访问另一个类的id,python,kivy,Python,Kivy,我想从类main访问类fahim2_pop的id。想要访问word从textinput(在主类中)到弹出窗口小部件,当有人按下搜索按钮时,弹出窗口小部件将出现。当有人搜索“hello”并按下搜索按钮时,弹出窗口小部件将出现,在该弹出窗口小部件中,标签的文本将与文本输入中的文本“hello”相同。但是标签和id仍然在不同的类中。怎么做 python代码 from kivy.app import App from kivy.uix.boxlayout import BoxLayout from ki

我想从类main访问类fahim2_pop的id。想要访问word从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()
千伏码

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 

''')
Builder.load\u字符串(“”)
:
盒子布局:
方向:“垂直”
文本输入:
id:word
按钮:
文本:“搜索”
按:root.word()
:
id:流行音乐
标题:“结果”
盒子布局:
标签:
文本:app.root.ids.word.text
''')

由于
main
是应用程序的根目录,因此您可以使用
app.get\u running\u app().root.ids.word从应用程序中的任何位置访问
TextInput
。因此,您可以在您的
弹出窗口
中使用它,如下所示:

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

有几种方法可以从另一个类访问
id
,但具体操作方式取决于应用程序的结构(您尚未共享的代码)。这就是为什么我们要求你发布一个。我已经添加了我的完整代码。现在请给出一个解决方案如果main不是我的应用程序的根怎么办?你说因为main是根,所以它是text:app.root.ids.word.text。但如果main不是根呢?那应该是什么?这个问题没有答案。这完全取决于应用程序的结构。您可以保存对类实例的引用,在方法之间传递它们,或者使用实例引用和
ids
字典相结合,甚至使用全局变量。
class fahim2_pop(Popup):
    pass