【发布时间】:2017-01-07 16:44:46
【问题描述】:
我的示例.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,所以这是可行的。
但是,如果我从KivyCamera 类调用on_disable 方法,那么即使调用了updateFreqAmpl 方法,滑块值也不会改变,但不会给出错误。
这是我如何从 KivyCamera 类调用 on_disable 方法:
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)
请注意,这是一个简化的示例,但我已经捕获了核心细节。
【问题讨论】:
标签: python kivy kivy-language