我有一个滑杆,我想从中获取位置值(即1、2、3等)并在其他功能中使用。但是,无论何时改变滑块的位置,它似乎都会返回两次滑块的值。从而导致我的其他功能运行两次,这会使一切变慢。这是我的意思的简单示例。
import wx
class windowClass(wx.Frame):
def __init__(self, *args, **kwargs):
super(windowClass, self).__init__(*args, **kwargs)
self.basicGUI()
def basicGUI(self):
panel = wx.Panel(self)
self.slider = wx.Slider(panel, -1, 2, 0, 4, pos=(10,25), size=(250,-1), style=wx.SL_AUTOTICKS | wx.SL_LABELS)
sliderText = wx.StaticText(panel, -1, 'Slider', (8,8))
self.Bind(wx.EVT_SLIDER, self.sliderUpdate)
self.SetTitle('Sliders Window!')
self.Show(True)
def sliderUpdate(self, event):
value = self.slider.GetValue()
print value
def main():
app = wx.App()
windowClass(None)
app.MainLoop()
main()
当滑块位置改变时,我看到两个相同的值打印到控制台,如图像http://i.imgur.com/4nkcTtp.jpg?1所示。
为什么会这样呢?
如果您希望滑块更改事件仅触发一次,请使用以下命令:
self.slider.Bind(wx.EVT_COMMAND_SCROLL_THUMBTRACK, self.sliderUpdate)
self.slider.Bind(wx.EVT_COMMAND_SCROLL_CHANGED, self.sliderUpdate)
简而言之,当您使用鼠标更改滑块时,第一个触发,而当您使用键盘更改滑块时,第二个触发。就像其他答案一样,wx.EVT_SLIDER会因更改滑块和释放鼠标而触发。
看看这大约与滑块相关的各种事件的细节。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句