wxformbuilder tutorial examples espaƱol book python linux wxwidgets

python - tutorial - Creando wxSlider con rango en Linux



wxwidgets python (2)

Algo relacionado ha sido descrito here .

En pocas palabras, la idea es dibujar un cuadro y colorear parte de él para representar su rango. Desde la izquierda, donde el usuario hace clic con el botón izquierdo, y desde la derecha, donde el usuario hace clic con el botón derecho.

En lugar de un cuadro y colorear, puedes dibujar algunos marcadores en una línea:

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

Estoy tratando de crear un control deslizante con la opción de selección de rango usando wxSlider en Python. Tiene un parámetro de rango opcional pero el problema es:

SL_SELRANGE: permite al usuario seleccionar un rango en el control deslizante. Sólo Windows.

Y estoy usando Linux. Pensé que podría crear una subclase de wxSlider y hacer que funcione en Linux, o crear un widget personalizado por mi cuenta. El problema es que no estoy seguro de cómo abordar cualquiera de las dos opciones. Cualquier idea / puntero / apuntándome en la dirección correcta sería apreciado.

Probé algo como:

range_slider = wx.Slider(parent, wx.ID_ANY, 0, 0, 100, style=wx.SL_HORIZONTAL | wx.SL_LABELS | wx.SL_SELRANGE)

pero el "SL_SELRANGE" no hace nada en Linux (debería proporcionar dos manejadores, para seleccionar el rango).


Usted podría tener dos controles deslizantes; uno que empujará al otro para que permanezca más bajo, y uno seguirá siendo más alto?

Sé que no es lo mismo, lo siento, pero es una opción. Entonces, cuando se mueve self.minSlider, se enlaza wx.EVT_SCROLL con una función que hará algo como:

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)

y viceversa para el maxSlider.

Además de eso, puedes ver cómo crear un widget personalizado here .