我有一个滑块,我想从中获取位置值(例如,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
为什么会这样?在
如果希望滑块更改事件只触发一次,请使用以下选项:
简单地说,第一个是在您使用鼠标更改滑块时触发的,第二个是在您使用键盘更改滑块时触发的。就像另一个答案说的,wx.EVT_滑块用于更改滑块和释放鼠标。在
有关与滑块关联的各种事件的详细信息,请查看this。在
值的每次更改都会得到一个事件,释放鼠标按钮时会得到一个额外的事件。如果这真的减慢了你的程序,你可以存储最后一个值,并与当前值进行比较,只在该值发生变化时才进行耗时的计算。在
相关问题 更多 >
编程相关推荐