想象一下这是main.py:
class Widget1(Button):
pass
class Widget2(ButtonBehavior, Image):
pass
在.kv文件中:
<Widget1>:
Button:
<Widget2>:
Image:
如何在主文件中初始化Widget1
和Widget2
?创建单独的App
不起作用。
答案 0 :(得分:1)
试试这个
class Widget1(Button)
pass
class Widget2(ButtonBehavior, Image)
pass
class MyMain(Widget):
pass
class MyApp(App):
def build(self):
return MyMain()
MyApp().run()
并在你的kivy
<MyMain>:
<Widget1>:
Button:
<Widget2>:
Image:
答案 1 :(得分:0)
为什么要在继承的小部件中添加另一个Button
和Image
?在我看来是这样的:
创建按钮→将另一个按钮放入该按钮小部件
你不想要那个。绝对不会在规则中创建规则 - 在python中几乎不相似:
def foo():
def bar():
...
...
有用于此的用例,但这不是它。 :P另外,我没有看到像这样创造它的观点:
<MyMain>:
<Widget1>:
Button:
<Widget2>:
Image:
因为必须以这种方式将其与python文件连接(它需要一个类)。其他东西是<MyWidget@Button>:
但是,有一个更简单的方法,它不需要额外的(在这种情况下是空的)类:
from kivy.app import App
from kivy.uix.image import Image
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.behaviors import ButtonBehavior
class Widget1(Button):
pass
class Widget2(ButtonBehavior, Image):
pass
class MyApp(BoxLayout, App):
def build(self):
self.add_widget(Widget1())
self.add_widget(Widget2())
return self
MyApp().run()
这样您就不需要像占位符那样创建另一个类,如果您使用小的东西,这非常方便。我不确定在MyApp
中继承订单,但它似乎适用于BoxLayout, App
和App, BoxLayout
个案例。