使用.kv文件中的按钮创建小部件

时间:2018-01-07 13:11:33

标签: kivy kivy-language

我有一个带有一个按钮的小部件 SimpleWidget.py

PostId

.kv

from kivy.properties import ObjectProperty
from kivy.uix.widget import Widget


class SimpleWidget(Widget):
    bt = ObjectProperty()

如何使用不同的按钮处理程序在.kv中创建此小部件?
我尝试使用此代码执行此操作

<SimpleWidget>:
    bt: button

    Button:
        id: button

或者

<MainScreen>:
    BoxLayout:
        SimpleWidget:
            bt.on_press: print('1')
        SimpleWidget:
             bt.on_press: print('2')

在这两种情况下,都会抛出异常

<MainScreen>:
    BoxLayout:
        SimpleWidget:
            self.button.on_press: print('1')
        SimpleWidget:
             self.button.on_press: print('2')

1 个答案:

答案 0 :(得分:0)

您可以在小部件上定义属性。

<强> SimpleWidget.kv

<MainScreen>:
    BoxLayout:
        SimpleWidget:
            number: 1
        SimpleWidget:
            number: 2

<SimpleWidget>:
    number: 0
    Button:
        id: button
        on_press: print(root.number)

<强> SimpleWidgetApp.py

from kivy.uix.widget import Widget
from kivy.app import App
from kivy.uix.label import Label

class MainScreen(Widget):
    pass

class SimpleWidget(Widget):
    pass

class SimpleWidgetApp(App):
    def build(self):
        return MainScreen()

if __name__ == '__main__':
    SimpleWidgetApp().run()