我正在尝试构建我的第一个kivy应用程序并创建一个简单的音频切割工具。我正在使用滑块小部件来显示播放歌曲中的位置(到目前为止),但我想让用户将滑块移动到所需位置并从所选位置播放歌曲。
我到目前为止的代码:
文件main.py:
播放歌曲时自动移动(时钟间隔回调):
def my_callback(self, dt):
if not self.loaded:
pass
else:
if self.playing:
self.position = self.song.get_pos()
self.truePos_slider.value = 100 * self.position / self.duration
当用户触摸滑块并将其移动到另一个位置时,应该会发生这种情况:
def slider_move(self):
if self.loaded:
self.position = (self.truePos_slider.value/100) * self.duration
file layout.kv:
...
BoxLayout:
orientation: 'vertical'
Slider:
id: truePos_slider
on_release: root.slider_move()
...
问题是来自kivy的Slider没有Button所具有的on_release事件。我认为我的问题与此处描述的类似:
我实际上喜欢来自inclement的解决方案,但我不知道究竟应该将MySliderSubclass的代码放在override方法中,以便让我的layout.kv文件识别它。你能帮我吗?
我很抱歉,如果这是一个愚蠢的问题,我实际上也是Python新手......
答案 0 :(得分:0)
如果您想使用on_release
,只需将.kv文件中的on_touch_up
替换为它,就可以像这样调用所有事件。您实际上不需要继承滑块类。
{{1}}是由所有窗口小部件共享的事件,因为它是在窗口小部件类本身中实现的。