如何使用外部 class 函数将小部件添加到 Class?

How to add a widget to a Class using outside class function?

Kivy 的超级新手。尝试在单击按钮后向网格布局添加标签,仅使用外部方法。没有错误,只是没有显示。这是我的代码。请帮忙。

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput
from kivy.uix.gridlayout import GridLayout
import datetime

a="" 

class MyGrid(GridLayout):
    def __init__(self, **kwargs):
        super(MyGrid, self).__init__(**kwargs)
        self.cols = 1
        self.submit=Button(text="submit" , font_size=40)
        self.add_widget(self.submit)
        self.submit.bind(on_press= ff)
        self.txt=TextInput(multiline=True)
        self.txt.bind(text = self.on_text)
        self.add_widget(self.txt)
        
    def on_text(self, instance, value):
        global a
        a=value

    def func(self, instance):
        self.add_widget(Label(text=a)) 


def ff(instance):        
    MyGrid().add_widget(Label(text="something"))     
    

class MyApp(App):
    def build(self):
        return MyGrid()


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

问题在于,在 ff 函数中,您创建了 MyGrid() 的新实例,而不是使用已有的实例。要修复它,请在 app.build() 方法中更改您拥有的内容:

class MyApp(App):
    def build(self):
        self.root = root = MyGrid()
        return root

这样您就可以引用根小部件。然后在你的 ff 函数中:

def ff(instance):
    App.get_running_app().root.add_widget(Label(text="something"))