2015-01-16 2 views
1

파이썬 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의 간단한 간단한 예가 있다는 데는 도움이되지 않습니다.

이 기능을 작동시키는 방법이 있습니까?

답변

0

event.Skip()을 마지막 줄로 넣으십시오 (OnSeek). 그렇지 않으면 EVT_SLIDER을 붙잡고 체인을 진행시키지 마십시오. wx은 이에 응답 할 수 없습니다. 예를 들어 this을 참조하십시오.

+0

아니요, 작동하지 않았습니다. – cornjuliox

+0

'self.seek_slider.Bind (wx.EVT_SLIDER, self.OnSeek)'행을 지우면 문제가 계속 발생합니까? – tom10

관련 문제