簡體   English   中英

如何在使用Kivy在kvlang上創建的BoxLayout上使用add_widget?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM