Python Kivy-向类中添加小部件

Python Kivy-向类中添加小部件,python,widget,kivy,Python,Widget,Kivy,我正在尝试向类中添加一个小部件,但它不起作用。 例如: 从kivy.uix.button导入按钮 从kivy.app导入应用程序 从kivy.uix.widget导入widget 从kivy.uix.gridlayout导入gridlayout 从kivy.lang导入生成器 Builder.load_字符串(“”) : 标签: 文字:“嗨!” ''') 课堂测试(网格布局): def生成(自): 通过 testbutton=Button(text=“这是我想在测试类上显示的!”) test()

我正在尝试向类中添加一个小部件,但它不起作用。 例如:

从kivy.uix.button导入按钮
从kivy.app导入应用程序
从kivy.uix.widget导入widget
从kivy.uix.gridlayout导入gridlayout
从kivy.lang导入生成器
Builder.load_字符串(“”)
:
标签:
文字:“嗨!”
''')
课堂测试(网格布局):
def生成(自):
通过
testbutton=Button(text=“这是我想在测试类上显示的!”)
test().add_小部件(testbutton)
类进近(应用程序):
def生成(自):
返回测试()
apprun().run()

运行时,这不起作用

解释事情如何不起作用通常是一种好的做法。例如,您可能有一个有用的python回溯,其中包括有关引发的异常的信息,或者您可能只是说您没有得到预期的结果,在这种情况下,您应该解释如何进行

在这种情况下,明显的问题是您试图从
app
继承,而您的意思是
app
。由于
app
不存在,这将引发异常

您还尝试将小部件添加到类定义(
test
)而不是类的实例(
test()
)。这也会失败,如果您不明白为什么应该阅读类定义和实例之间的差异


另外,小部件不需要
构建方法,这不会起任何作用。

这就是你想要的吗

from kivy.uix.button import Button
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import GridLayout
from kivy.lang import Builder

Builder.load_string('''
<test>:
    Label:
        text: "Hi!"
''')

class test(GridLayout):
    pass

class apprun(App):
    def build(self):
        t = test()
        b = Button(text="This I want to show on test class!")
        t.add_widget(b)     
        return t

apprun().run()
从kivy.uix.button导入按钮
从kivy.app导入应用程序
从kivy.uix.widget导入widget
从kivy.uix.gridlayout导入gridlayout
从kivy.lang导入生成器
Builder.load_字符串(“”)
:
标签:
文字:“嗨!”
''')
课堂测试(网格布局):
通过
类进近(应用程序):
def生成(自):
t=测试()
b=按钮(text=“我想在测试类上显示此内容!”)
t、 添加小部件(b)
返回t
apprun().run()
或者这个。。。因此,您的小部件不会相互重叠

from kivy.uix.button import Button
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import GridLayout
from kivy.core.window import Window
from kivy.lang import Builder

Builder.load_string('''
<test>:
    Label:
        text: "Hi!"
''')

class test(GridLayout):
    pass

class apprun(App):
    def build(self):
        t = test(cols=1, size=Window.size)
        b=Button(text="This I want to show on test class!")
        t.add_widget(b)     
        return t

apprun().run()
从kivy.uix.button导入按钮
从kivy.app导入应用程序
从kivy.uix.widget导入widget
从kivy.uix.gridlayout导入gridlayout
从kivy.core.window导入窗口
从kivy.lang导入生成器
Builder.load_字符串(“”)
:
标签:
文字:“嗨!”
''')
课堂测试(网格布局):
通过
类进近(应用程序):
def生成(自):
t=测试(cols=1,size=Window.size)
b=按钮(text=“我想在测试类上显示此内容!”)
t、 添加小部件(b)
返回t
apprun().run()

很抱歉程序中出现了错误,我只是粗略地键入了它作为示例,但不管怎样,没有错误,它只是显示Hi!而不是按钮,我想在使用生成器时创建类,因此我无法进行类定义。这是因为您将小部件添加到一个测试实例中,然后在应用程序的构建方法中返回一个完全不同的实例。将小部件添加到您返回的实例中,每个实例都是独立的。
from kivy.uix.button import Button
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import GridLayout
from kivy.core.window import Window
from kivy.lang import Builder

Builder.load_string('''
<test>:
    Label:
        text: "Hi!"
''')

class test(GridLayout):
    pass

class apprun(App):
    def build(self):
        t = test(cols=1, size=Window.size)
        b=Button(text="This I want to show on test class!")
        t.add_widget(b)     
        return t

apprun().run()