Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取滑块以响应沿条的任意单击_Python_Wxpython - Fatal编程技术网

Python 获取滑块以响应沿条的任意单击

Python 获取滑块以响应沿条的任意单击,python,wxpython,Python,Wxpython,我正在使用Python2.7和Wxpython3.0 msw classic。这是我的代码: class MusicPlayer(wx.Panel): def __init__(self, *args, **kwargs): super(MusicPlayer, self).__init__(*args, **kwargs) # it remains to be seen if my new design choices # have a

我正在使用Python2.7和Wxpython3.0 msw classic。这是我的代码:

class MusicPlayer(wx.Panel):
    def __init__(self, *args, **kwargs):
        super(MusicPlayer, self).__init__(*args, **kwargs)

        # it remains to be seen if my new design choices
        # have any negative effect on the application
        # in the end.
        self.setupTimer()
        self.media_ctrl = self.setupMediaPlayer()
        self.media_ctrl.Hide()

        self.master_sizer = wx.BoxSizer(wx.VERTICAL)
        self.slider_sizer = self.setupSlider() #this should return a sizer.
        self.button_sizer = self.setupButtons()
        self.music_info_sizer = self.setupMusicDataView()

        self.master_sizer.Add(self.music_info_sizer, 0, wx.EXPAND | wx.ALL, border=7)
        self.master_sizer.Add(self.slider_sizer, 0, wx.EXPAND)
        self.master_sizer.Add(self.button_sizer, 0, wx.EXPAND)

        self.SetSizer(self.master_sizer)

        self.Bind(wx.media.EVT_MEDIA_LOADED, self.OnPlay)
        pub.subscribe(self.OnLoad, 'files_loaded_topic')

    def setupSlider(self):
        # I wonder if I need to add self to this...
        self.seek_slider = wx.Slider(self, -1, 0, 1, 2)
        self.seek_slider.Bind(wx.EVT_SLIDER, self.OnSeek)

        sliderSizer = wx.BoxSizer(wx.HORIZONTAL)
        sliderSizer.Add(self.seek_slider, 1, wx.EXPAND | wx.ALL, border=2)
        return sliderSizer

    def OnSeek(self, event):
        offset = self.seek_slider.GetValue()
        self.media_ctrl.Seek(offset)
基本上,这就是我正在玩弄的这个媒体播放器的本质。这里的问题是我使用的滑块,我省略了大部分其他代码,以使其易于阅读。我可以点击拇指,然后像预期的那样在音乐条周围拖动它,以在歌曲中跳转位置,但是每当我试图通过直接点击音乐条来改变滑块位置时,什么都不会发生

我尝试过使用不同的事件,wx.EVT_SCROLL和wx.EVT_COMMAND_SCROLL,但似乎没有任何效果

它没有帮助,演示应用程序有一个超级简单的例子滑块,似乎有这个功能的开箱即用,无需更改

有什么方法可以让这个功能正常工作吗?

试着把event.Skip作为OnSeek的最后一行。否则,您将捕获EVT_滑块,并且不让它沿着链向上移动,因此wx将无法响应它。例如,请参见。

如果删除self.seek\u slider.Bindwx.EVT\u slider、self.OnSeek行,问题是否仍然存在?