[英]How to used add_widget on a BoxLayout created on kvlang with kivy?
我需要在我的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'
您需要使用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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.