Создание wxSlider с диапазоном в Linux
Я пытаюсь создать слайдер с возможностью выбора диапазона с помощью wxSlider в Python. Он имеет необязательный параметр диапазона, но проблема заключается в следующем:
SL_SELRANGE: Позволяет пользователю выбирать диапазон на ползунке. Только Windows.
И я использую Linux.
Я думал, что могу подклассифицировать wxSlider и заставить его работать в Linux, или самостоятельно создать собственный виджет. Проблема в том, что я не уверен, как обойти любой вариант.
Любые идеи/указатели/указывающие на меня в правильном направлении, будут оценены.
Я пробовал что-то вроде:
range_slider = wx.Slider(parent, wx.ID_ANY, 0, 0, 100, style=wx.SL_HORIZONTAL | wx.SL_LABELS | wx.SL_SELRANGE)
но "SL_SELRANGE" ничего не делает в Linux (должен содержать две ручки, выбирать диапазон).
Ответы
Ответ 1
У вас может быть два ползунка; один, который подтолкнет другого, чтобы он остался ниже, и один останется выше?
Я знаю, что это не одно и то же, извините, но это вариант.
Поэтому, когда когда-либо self.minSlider перемещается, вы связываете wx.EVT_SCROLL с функцией, которая будет делать что-то вроде:
self.minSlider.Bind(wx.EVT_SCROLL, self.respondSliderChange())
def respondSliderChange(self):
if self.minSlider.GetValue() >= self.maxSlider.GetValue():
self.maxSlider.SetValue(self.minSlider.GetValue()+1)
и наоборот для maxSlider.
Кроме того, вы можете изучить создание пользовательского виджета здесь.
Ответ 2
Что-то связанное описано здесь.
Вкратце идея состоит в том, чтобы нарисовать коробку и цветную часть ее, чтобы представить ваш диапазон. Слева, где ваш пользователь щелкнул левой кнопкой мыши и справа, где ваш пользователь щелкнул правой кнопкой мыши.
Вместо поля и раскраски вы можете нарисовать некоторые маркеры на линии:
--------[-----------]--