Kivy滑块覆盖on_touch_up

时间:2017-06-19 10:30:34

标签: python slider kivy

我正在尝试构建我的第一个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事件。我认为我的问题与此处描述的类似:

Kivy slider event on_release

我实际上喜欢来自inclement的解决方案,但我不知道究竟应该将MySliderSubclass的代码放在override方法中,以便让我的layout.kv文件识别它。你能帮我吗?

我很抱歉,如果这是一个愚蠢的问题,我实际上也是Python新手......

1 个答案:

答案 0 :(得分:0)

如果您想使用on_release,只需将.kv文件中的on_touch_up替换为它,就可以像这样调用所有事件。您实际上不需要继承滑块类。 {{1}}是由所有窗口小部件共享的事件,因为它是在窗口小部件类本身中实现的。