如何使用外部 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"))
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"))