gpt4 book ai didi

python - 在鼠标单击下获取 wxpython slider 的值

转载 作者:太空宇宙 更新时间:2023-11-03 15:23:58 24 4
gpt4 key购买 nike

我想模拟或大多数媒体播放器的 slider - 单击 slider 小部件上的任意位置可将视频跳到该位置。如何在鼠标单击下获取 slider 的值并将该值设置为该值?

默认情况下,当点击 slider 时,它一次只滚动一个页面大小,不会滚动到用户点击的位置。

最佳答案

下面的代码在 Windows XP 中有效,但是我不知道如何通过实验以外的其他方式获取 GAP 常量。 GAP 值指示小部件边缘和绘制 slider 的实际开始之间的空白空间。

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()

关于python - 在鼠标单击下获取 wxpython slider 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9961456/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com