我正在尝试将一个小部件添加到一个类但它无法正常工作。 例如:
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()
运行时,这不起作用。
答案 0 :(得分:2)
通常很好的做法是解释 事情如何不起作用。例如,您可能有一个有用的python回溯,包括有关引发的异常的信息,或者您可能只是意味着您没有得到您期望的结果,在这种情况下您应该解释如何。
在这种情况下,显而易见的问题是,当您的意思是app
时,您尝试继承App
。由于app
不存在,这将引发异常。
您还尝试将小部件添加到类定义(test
)而不是类的实例(test()
)。这也将失败,如果你不明白为什么你应该阅读类定义和实例之间的区别。
此外,小部件不需要build
方法,这将不执行任何操作。
答案 1 :(得分:0)
这就是你想要的吗?
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()