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 .