wx滑块绑定函数返回两次

神秘鲍勃

我有一个滑杆,我想从中获取位置值(即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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

wx滑块绑定函数返回两次

来自分类Dev

AOP AfterReturning函数返回两次

来自分类Dev

是否可以从嵌套函数“返回两次”?

来自分类Dev

函数从main()返回两次被调用的指针

来自分类Dev

PHP MYSQL返回结果两次(两次)

来自分类Dev

调用装饰函数两次将仅返回装饰器,而不返回该函数

来自分类Dev

jQuery绑定发送表单两次

来自分类Dev

Grails GORM绑定字段两次

来自分类Dev

Web Worker 函数为一次调用返回两次响应

来自分类Dev

函数运行两次,因为事件处理程序没有被解除绑定

来自分类Dev

DependencyProperty可以绑定两次到TwoWay绑定吗?

来自分类Dev

角$ http承诺两次返回

来自分类Dev

MySQL两次返回数据

来自分类Dev

SELECT两次返回DataRow

来自分类Dev

计算属性两次返回

来自分类Dev

拉刷新两次返回数据

来自分类Dev

角度服务返回两次

来自分类Dev

Linq避免两次调用函数

来自分类Dev

调用单个函数两次

来自分类Dev

防止js函数执行两次

来自分类Dev

JS函数被调用两次?

来自分类Dev

两次调用javascript函数的问题

来自分类Dev

matchMedia调用函数两次

来自分类Dev

onDraw函数被调用两次?

来自分类Dev

防止函数连续被调用两次

来自分类Dev

PageViewController委托函数被调用两次

来自分类Dev

两次使用相同的AJAX函数

来自分类Dev

AngularJS-函数被调用两次

来自分类Dev

jQuery嵌套函数循环两次