我的样本.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)
请注意,这是一个简化示例,但我已经捕获了核心细节。
答案 0 :(得分:0)
如果使用现有的 intLab ,您正在创建新的实例。
def update(self, dt):
t = intLab() #creating a new one == :(
intLab.on_disable(t)
您需要访问现有 intLad 实例 ,,,