Подтвердить что ты не робот

Создание 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 (должен содержать две ручки, выбирать диапазон).

4b9b3361

Ответ 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

Что-то связанное описано здесь.

Вкратце идея состоит в том, чтобы нарисовать коробку и цветную часть ее, чтобы представить ваш диапазон. Слева, где ваш пользователь щелкнул левой кнопкой мыши и справа, где ваш пользователь щелкнул правой кнопкой мыши.

Вместо поля и раскраски вы можете нарисовать некоторые маркеры на линии:

--------[-----------]--