我需要在我的kvlang创建的屏幕上通过python代码添加小部件。但是,当我尝试添加它时,它返回我的BoxLayout不存在。
我认为发生这种情况是因为.py代码是在kvlang之前启动的,因为当我使用on_enter: print('a')
时,它会返回错误并且不打印a
。
我该怎么做?
.py代码
import kivy
from kivy.app import App
from kivy.uix.screenmanager import Screen
from kivy.uix.button import Button
class Screen1(Screen):
def __init__(self):
bt = Button()
bt.text = 'def'
self.bx.add_widget(bt)
class rootApp(App):
def build(self):
return Screen1()
rootApp().run()
.kv文件
<Screen1>:
BoxLayout:
id:bx
Button:
text:'abc'
答案 0 :(得分:1)
您需要使用ids
来访问bx
。您还需要调用超类的__init__()
方法。像这样:
import kivy
from kivy.app import App
from kivy.uix.screenmanager import Screen
from kivy.uix.button import Button
class Screen1(Screen):
def __init__(self, **kwargs):
super(Screen1, self).__init__(**kwargs)
bt = Button()
bt.text = 'def'
self.ids.bx.add_widget(bt)
class rootApp(App):
def build(self):
return Screen1()
rootApp().run()