wxpython滑动面板_在鼠标单击下获取wxpython滑块的值

该代码示例展示了一个在WindowsXP环境下实现的自定义滑块控件,其中包含了一个名为GAP的常数,用于设置滑块边缘与实际起点间的空白空间。VideoSlider类继承自wx.Slider,并添加了OnClick事件处理,通过linapp方法计算鼠标点击位置对应的滑块值。在MainWindow类中创建并展示了这个滑块实例,监听滑动事件并打印当前值。
摘要由CSDN通过智能技术生成

以下代码在Windows XP中有效,但是除了实验之外,我不知道如何以其他方式获取GAP常数. GAP值指示小部件边缘与绘制的滑块的实际起点之间的空白空间.

import wx

GAP = 12

class VideoSlider(wx.Slider):

def __init__(self, gap, *args, **kwargs):

wx.Slider.__init__(self, *args, **kwargs)

self.gap = gap

self.Bind(wx.EVT_LEFT_DOWN, self.OnClick)

def linapp(self, x1, x2, y1, y2, x):

return (float(x - x1) / (x2 - x1)) * (y2 - y1) + y1

def OnClick(self, e):

click_min = self.gap

click_max = self.GetSize()[0] - self.gap

click_position = e.GetX()

result_min = self.GetMin()

result_max = self.GetMax()

if click_position > click_min and click_position < click_max:

result = self.linapp(click_min, click_max,

result_min, result_max,

click_position)

elif click_position <= click_min:

result = result_min

else:

result = result_max

self.SetValue(result)

e.Skip()

class MainWindow(wx.Frame):

def __init__(self, *args, **kwargs):

wx.Frame.__init__(self, *args, **kwargs)

self.panel = wx.Panel(self)

self.slider = VideoSlider(parent=self.panel, size=(300, -1), gap=GAP)

self.slider.Bind(wx.EVT_SLIDER, self.OnSlider)

self.sizer = wx.BoxSizer()

self.sizer.Add(self.slider)

self.panel.SetSizerAndFit(self.sizer)

self.Show()

def OnSlider(self, e):

print(self.slider.GetValue())

app = wx.App(False)

win = MainWindow(None)

app.MainLoop()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值