在Kivy中启动多个小部件

2024-05-03 23:44:02 发布

您现在位置:Python中文网/ 问答频道 /正文

把这个想象成主.py公司名称:

class Widget1(Button):
    pass

class Widget2(ButtonBehavior, Image):
    pass

在.kv文件中:

^{pr2}$

如何在主文件中同时初始化Widget1和{}?创建单独的App不起作用。在


Tags: 文件pyimage名称公司buttonpassclass
2条回答

为什么要在继承的小部件中放入另一个ButtonImage?在我看来是这样的:

create button → place another button into that button widget

你不想那样。而且绝对不能在规则中创建规则—这在python中几乎不相似:

def foo():
    def bar():
        ...
    ...

这是有用例的,但不是这样。:P同样,我不认为这样做有什么意义:

^{pr2}$

因为必须以这种方式将其与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和{}两种情况。在

试试这样

class Widget1(Button)
    pass

class Widget2(ButtonBehavior, Image)
    pass

class MyMain(Widget):
    pass

class MyApp(App):
    def build(self):
        return MyMain()

MyApp().run()

在你的车里

^{pr2}$

相关问题 更多 >