Kivy调用来自不同类

时间:2017-01-07 16:44:47

标签: python kivy kivy-language

我的样本.kv文件中有一个按钮和两个滑块:

<intLab>:
    BoxLayout:
        orientation: "vertical"
    BoxLayout:
        size_hint_y: None
        height: 10
        orientation: "horizontal"

        FREQslider:
            id: s2
            color: 1,0.5,1,1
            value: 20
            orientation: 'vertical'
            max: 300
            min: 20
            size_hint_x: None
            width: '48dp'
            step: 1
            on_value: root.onFrequencySlide(self.value)

        AMPLslider:
            id: s3
            color: 1,.5,.5,0
            value: 1
            orientation: 'vertical'
            max: 100
            min: 0
            size_hint_x: None
            width: '48dp'
            step: 1
            on_value: root.onAmplitudeSlide(self.value)

        ToggleButton:
            id: 'enableBtn'
            text: 'Enable' if self.state == 'normal' else 'Disable'
            state: 'normal'
            on_release: root.on_disable()

.py文件中,我有两个类。对应于.kv结构的类intLab和另一个类KivyCamera

class intLab(BoxLayout):

    def init_intlab(self):
        pass

    def on_disable(self):
        self.updateFreqAmpl(0, 0)
        self.ids.s2.value = 20
        self.ids.s3.value = 0

当我按下disable按钮时,从kivy UI调用updateFreqAmpl方法,两个滑块分别设置为20和0,这样就可以了。

但是,如果我从on_disable类调用KivyCamera方法,那么即使调用updateFreqAmpl方法,滑块值也不会更改,但不会给出错误。< / p>

以下是我从on_disable类调用KivyCamera方法的方法:

class KivyCamera(Image):

    def __init__(self, **kwargs):
        super(KivyCamera, self).__init__(**kwargs)
        self.capture = None

    def update(self, dt):
        t = intLab()
        intLab.on_disable(t)

请注意,这是一个简化示例,但我已经捕获了核心细节。

1 个答案:

答案 0 :(得分:0)

如果使用现有的 intLab ,您正在创建新的实例

def update(self, dt):
    t = intLab() #creating a new one == :(
    intLab.on_disable(t)

您需要访问现有 intLad 实例 ,,,