파이썬 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