Kivy - 向类中添加组件
我想在一个类里添加一个小工具,但它没有成功。
举个例子:
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):
def build(self):
pass
testbutton=Button(text="This I want to show on test class!")
test().add_widget(testbutton)
class apprun(App):
def build(self):
return test()
apprun().run()
运行的时候,这个不管用。
2 个回答
1
这是不是你想要的效果?
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()
或者也许是这个...这样你的组件就不会互相重叠了。
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()
2
通常来说,解释一下事情为什么不工作是个好习惯。比如,你可能会有一个有用的Python错误追踪信息,里面包含了关于发生异常的详细信息,或者你可能只是想说你没有得到预期的结果,这种情况下你应该解释一下具体情况。
在这个例子中,明显的问题是你试图从app
继承,但你其实是想要App
。因为app
并不存在,所以会抛出一个异常。
你还试图在一个类定义(test
)中添加一个小部件,而不是在类的实例(test()
)中添加。这也会失败,如果你不明白为什么,建议你去了解一下类定义和实例之间的区别。
另外,小部件并不需要一个build
方法,这样做是没有任何作用的。