Kivy Switch Callback - PullRequest
       7

Kivy Switch Callback

0 голосов
/ 04 октября 2018

Я очень новичок в Киви.Пожалуйста, помогите мне сделать корректный виджет переключения.Вот мой текущий код:

    from kivy.app import App
    from kivy.base import runTouchApp
    from kivy.lang import Builder
    runTouchApp(Builder.load_string('''

    StackLayout:
        orientation: 'lr-tb'
        padding: 10
        spacing: 5

        Button:
            text: 'S1'
            size_hint: .2,.1

        Button:
            text: 'S2'
            size_hint: .2,.1

        Button:
            text: 'S3'
            size_hint: .2,.1

        Switch:
            id: switch_id
            on_active: root.switch_on(self, self.active)
            size_hint: .2, .1



    '''))

Я знаю, что мне нужно добавить следующий код, но я не уверен, как реализовать с классами.Вот упомянутое мной дополнение:

    def switch_on(self, instance, value):
        if value is True:
            print("Switch On")
        else:
            print("Switch Off")

Любая помощь в том, как правильно собрать все это, будет принята с благодарностью:)

1 Ответ

0 голосов
/ 04 октября 2018

Вот пример того, как это сделать:

from kivy.app import App
from kivy.lang import Builder



theRoot = Builder.load_string('''

StackLayout:
    orientation: 'lr-tb'
    padding: 10
    spacing: 5

    Button:
        text: 'S1'
        size_hint: .2,.1

    Button:
        text: 'S2'
        size_hint: .2,.1

    Button:
        text: 'S3'
        size_hint: .2,.1

    Switch:
        id: switch_id
        on_active: app.switch_on(self, self.active)
        size_hint: .2, .1

''')

class theApp(App):

    def build(self):
        return theRoot

    def switch_on(self, instance, value):
        if value is True:
            print("Switch On")
        else:
            print("Switch Off")


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

Обратите внимание, что в строке kv вместо root (которая будет StackLayout) я использую app, что относится к классу theApp.

...