1
我正在使用Python 2.7和wxPython 3.0 msw(经典)。这是我的代码:获取滑动条以响应点击任何沿着酒吧
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,但似乎没有工作。
这对演示应用程序有一个超级简单的Slider示例没有帮助,它似乎具有即用即用的功能,无需进行任何更改。
有没有什么办法让这个功能起作用?
不,没有工作。 – cornjuliox
如果删除'self.seek_slider.Bind(wx.EVT_SLIDER,self.OnSeek)'这一行,问题是否仍然存在? – tom10