RangeSlider


NameRangeSlider JSON
Version 2023.7.2 PyPI version JSON
download
home_pagehttps://github.com/harshvinay752/RangeSlider
SummaryPython tkinter widget for range selection in slider widget structure with two handles
upload_time2023-07-18 08:38:11
maintainer
docs_urlNone
authorHarsh Agarwal
requires_python
licenseMIT
keywords python tkinter range slider two handle selector widget
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![PyPi](https://img.shields.io/pypi/v/RangeSlider)](https://pypi.org/project/RangeSlider/)
[![Downloads](https://img.shields.io/pypi/dm/RangeSlider)](https://pypi.org/project/RangeSlider)

# RangeSlider 2023.07.2

Range selection widget for Python Tkinter GUI developement in slider widget structure with two handles.
<!--    
***Add-on files***
+ An ipython notebook is provided to illustrate the basic usage of tool. -->

***Updates and Fixes in v2023.07.2 w.r.t v2023.07.1***
+ Updated: Documentation, included padX and padY in widget calls to avoid confusion with errors. However, the values needs to be updated in case of non-suitability depending on system and used font size, handle size etc.
+ Added: Sample ipython notebook containing code. (Visit: https://github.com/harshvinay752/RangeSlider/blob/1a068138c63ca61ccc734e71c27201e7a851c65a/sample.ipynb)

***Updates and Fixes in v2023.07.1 w.r.t v2022.12.1***
+ Fixed: Error in updation of UI in absence of step markers.
+ Fixed: Error in initialisation of handle values. (Closing the issue: https://github.com/harshvinay752/RangeSlider/issues/7#issue-1806570927)
+ Added: Complimentary check for correct [step_size] parameter in case of usage of step markers.
+ Fixed: Updated example code in documentation.

***Updates and Fixes in v2022.12.1 w.r.t. v2021.7.4***
+ Added option to change font color of label (Merged from: https://github.com/RWitak)
+ Improved and added option to set initial value of handles. (Merged from: https://github.com/sebasj13)

Note: In order to set the initial values -- declare initial value to the handle variable, if undeclared both handles will be set to min_val. See example in Usage section.
+ Added option to set step size. (Closing the issue: https://github.com/harshvinay752/RangeSlider/issues/4#issue-1451264874)
+ Added option to display step points on the bar, with added color option.
+ Added option to (dis)allow the handles to cross each other.
+ Added option to force(or set) handle value. (Both by value or normalised position). (Closing the issue: https://github.com/harshvinay752/RangeSlider/issues/1#issue-1050521371)

***Features:***
+ Range selection
+ Vertical as well as horizontal widget
+ Option for showing current value of handle
+ Customizable handle with default circular handle offering color choice or using image as handle
+ Ability to bind a tkinter variable, making it easier to check for slider movement
+ Custom font and position for value text
+ Customizable value precision
+ Custom suffix option
+ Many others...

# Preview
[preview.png] image file in repository.

## Usage

***Importing required sliders***

For horizontal RangeSlider:
```
from RangeSlider.RangeSlider import RangeSliderH 
```

For vertical RangeSlider:
```
from RangeSlider.RangeSlider import RangeSliderV
```

For both horizontal and vertical RangeSlider:
```
from RangeSlider.RangeSlider import RangeSliderH, RangeSliderV
```

***Creating Simple RangeSlider widget:***
```
from tkinter.ttk import *
import tkinter as tk
 
root = tk.Tk()
 
hLeft = tk.DoubleVar(value = 0.2)  #left handle variable initialised to value 0.2
hRight = tk.DoubleVar(value = 0.85)  #right handle variable initialised to value 0.85
hSlider = RangeSliderH( root , [hLeft, hRight] , padX = 12)   #horizontal slider, [padX] value might be needed to be different depending on system, font and handle size. Usually [padX] = 12 serves,
                                                              #otherwise a recommended value will be shown through an error message
hSlider.pack()   # or grid or place method could be used

vBottom = tk.DoubleVar(value = 0)   #bottom handle variable
vTop = tk.DoubleVar(value = 1)   #top handle variable
vSlider = RangeSliderV( root, [vBottom, vTop] , padY = 12)    #vertical slider, [padY] value might be needed to be different depending on system, font and handle size. Usually [padY] = 12 serves,
                                                              #otherwise a recommended value will be shown through an error message
vSlider.pack()  # or grid or place method could be used

root.mainloop()
```

***Getting current value***
```
print ( hSlider.getValues() )  #return type list of format [ left handle value, right handle value ]
print ( vSlider.getValues() )  #return type list of format [ bottom handle value, top handle value ]
```

***Force value***
```
hSlider.forceValues([0.2, 0.67])  #returns None
vSlider.forceValues([0.62, 0.85])  #returns None
```

***Callback on value change***
``` 
def doSomething():
    print ('I was called.')

hLeft.trace_add('w', doSomething)
hRight.trace_add('w', doSomething)
vBottom.trace_add('w', doSomething)
vTop.trace_add('w', doSomething)
```
***Attributes***

*For RangeSliderH*:

|Attribute|Default Value|Acceptable Value(s) or Description|Release Comment|
|--|--|--|--|
|master| N/A | parent like Tk instance, TopLevel, or Frame etc.|v2021.7.4|
|variables| N/A | list of DoubleVar of length two in order of left handle and right handle|v2021.7.4|
|Width| 400 | width of widget in px |v2021.7.4|
|Height| 80 | height of widget in px |v2021.7.4|
|min_val| 0 | minimum value |v2021.7.4|
|max_val| 1 | maximum value |v2021.7.4|
|padX| 3 | padding from both left and right in px |v2021.7.4|
|image_anchorR| CENTER |anchor value for right handle if image is used as handle  -  N, NE, E, SE, S, SW, W, NW, CENTER |v2021.7.4|
|image_anchorL| CENTER |anchor value for left handle if image is used as handle  -  N, NE, E, SE, S, SW, W, NW, CENTER |v2021.7.4|
|imageL| None | PhotoImage instance for imaged left handle |v2021.7.4|
|imageR| None | PhotoImage instance for imaged right handle |v2021.7.4|
|auto| True | True for automatic circular colored handle, False for imaged handle |v2021.7.4|
|line_width| 3 | width of widget track in px |v2021.7.4|
|bar_radius| 10 | radius of outer circle of handle |v2021.7.4|
|bar_color_inner| '#5c8a8a' | hex value of color for inner circle in string format |v2021.7.4|
|bar_color_outer| '#c2d6d6' | hex value of color for inner circle in string format |v2021.7.4|
|line_s_color| '#0a50ff' | hex value of color for selected portion for widget track in string format |v2021.7.4|
|line_color| '#476b6b' | hex value of color for unselected portion for widget track in string format|v2021.7.4|
|bgColor| '#ffffff' | hex value of color for background of widget in string format |v2021.7.4|
|step_marker_color| '#ffffff' | hex value of color in string format for steps marked on widget bar|__v2022.12.1__|
|font_color| '#000000' | hex value of color for font of widget in string format |__v2022.12.1__|
|show_value| True | True if current value of handle are intended; otherwise False |v2021.7.4|
|digit_precision| '.1f' | precision format for shown value |v2021.7.4|
|valueSide| 'TOP' | 'TOP' if shown value intended above the handle or 'BOTTOM' if shown value intended below the handle |v2021.7.4|
|font_family| 'Times' | font family ( all font families supported by tkinter are acceptable )|v2021.7.4|
|font_size| 16 | font size in pt |v2021.7.4|
|suffix| "" | suffix for shown value |v2021.7.4|
|step_size| 0 | step size of handle movement, step_size equal to 0 implies continuous movement subject to system architecture floating point resolution |__v2022.12.1__|
|step_marker| False | True if to display step markers on bar; otherwise False |__v2022.12.1__|
|cross_each_other| False | True if handles can cross each other |__v2022.12.1__|

*For RangeSliderV:*

|Attribute|Default Value|Acceptable Value(s)|Release Comment|
|--|--|--|--|
|master| N/A | parent like Tk instance, TopLevel, or Frame etc.|v2021.7.4|
|variables| N/A | list of DoubleVar of length two in order of lower handle and upper handle|v2021.7.4|
|Width| 80 | width of widget in px |v2021.7.4|
|Height| 400 | height of widget in px |v2021.7.4|
|min_val| 0 | minimum value |v2021.7.4|
|max_val| 1 | maximum value |v2021.7.4|
|padY| 3 | padding from both top and bottom in px |v2021.7.4|
|image_anchorU| CENTER |anchor value for upper handle if image is used as handle  -  N, NE, E, SE, S, SW, W, NW, CENTER |v2021.7.4|
|image_anchorL| CENTER |anchor value for lower handle if image is used as handle  -  N, NE, E, SE, S, SW, W, NW, CENTER |v2021.7.4|
|imageL| None | PhotoImage instance for imaged lower handle |v2021.7.4|
|imageU| None | PhotoImage instance for imaged upper handle |v2021.7.4|
|auto| True | True for automatic circular colored handle, False for imaged handle |v2021.7.4|
|line_width| 3 | width of widget track in px |v2021.7.4|
|bar_radius| 10 | radius of outer circle of handle |v2021.7.4|
|bar_color_inner| '#5c8a8a' | hex value of color for inner circle in string format |v2021.7.4|
|bar_color_outer| '#c2d6d6' | hex value of color for inner circle in string format |v2021.7.4|
|line_s_color| '#0a50ff' | hex value of color for selected portion for widget track in string format |v2021.7.4|
|line_color| '#476b6b' | hex value of color for unselected portion for widget track in string format|v2021.7.4|
|bgColor| '#ffffff' | hex value of color for background of widget in string format |v2021.7.4|
|step_marker_color| '#ffffff' | hex value of color in string format for steps marked on widget bar|__v2022.12.1__|
|font_color| '#000000' | hex value of color for font of widget in string format |__v2022.12.1__|
|show_value| True | True if current value of handle are intended; otherwise False |v2021.7.4|
|digit_precision| '.1f' | precision format for shown value |v2021.7.4|
|valueSide| 'TOP' | 'TOP' if shown value intended above the handle or 'BOTTOM' if shown value intended below the handle |v2021.7.4|
|font_family| 'Times' | font family ( all font families supported by tkinter are acceptable )|v2021.7.4|
|font_size| 16 | font size in pt |v2021.7.4|
|suffix| "" | suffix for shown value |v2021.7.4|
|step_size| 0 | step size of handle movement, step_size equal to 0 implies continuous movement subject to system architecture floating point resolution |__v2022.12.1__|
|step_marker| False | True if to display step markers on bar; otherwise False |__v2022.12.1__|
|cross_each_other| False | True if handles can cross each other |__v2022.12.1__|

***Additional Notes for attributes***
+ if show_value is False, digit_precision, valueSide, font_family, font_size and suffix have no effect
+ if auto is True, imageL, imageU, image_anchorL, image_anchorR and image_anchorU have no effect
+ if auto is False, bar_radius, bar_color_inner, bar_color_outer have no effect
+ if step_size is zero, step_marker will not be made

***Exceptions raised***
|Condition|Exception|
|--|--|
|if auto is True and either imageL or imageU or imageR or combination out of three is also given | Exception raised: "Can't decide if to use auto shape or images!" |
| if auto is False and one of the image handles is missing | Exception raised: "Handle for one image missing." |
| if auto is False and dimensions for both handles provided are not same | Exception raised : "Image dimensions incompatible, both handles should have same height and width respectively." |
| if Width or Height or padX or padY are not sufficient to render the widget with all features visible safely | Exception raised : $dimension$ not suitable with suggestions to avoid it |

***Functions***

|Function|Arguments|Output Format|
|--|--|--|
|getValues()|NIL|value of handle variables in list format in the same order as given in object definition, returned values lie between min_val and max_val|
|getPos()|NIL|normalised value of handle variables in list format in the same order as given in object definition, returned values lie between 0 and 1|
|forceValues(values)|values : a list of two values each indicating value of handle, values must be between min_val and max_val|return None|
|forcePos(pos)|pos : a list of two normalised values each indicating value of handle, values must be between 0 and 1|return None|

Note: The relation between value ($v_i$) and normalised value ($n_i$) of $i^{th}$ handle defined for a slider with max_val of $v_<$ and min_val of $v_>$ is given by:

$\begin{equation}
n_i = \frac{v_i - v_>}{v_<-v_>}
\end{equation}$


# Words of Developer

This is the second version of this library. It is one of its kind widget for tkinter. When I was developing a tool for my college project I found that at the time no inbuilt or external tool is available for tkinter allowing range selection. However, range selection is a high demand tool specially for applications dealing with data visualizations. I would appreciate any developer from any community who wants to contribute to this project.

I thank RWitak and Sebastian for contributing to this project.



            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/harshvinay752/RangeSlider",
    "name": "RangeSlider",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "Python,tkinter,range,slider,two handle,selector,widget",
    "author": "Harsh Agarwal",
    "author_email": "harshvinay752@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/47/fd/460e4c9282d43520cd740abd2312a446b6e57e54c974b57c02d03f0fd544/RangeSlider-2023.7.2.tar.gz",
    "platform": null,
    "description": "[![PyPi](https://img.shields.io/pypi/v/RangeSlider)](https://pypi.org/project/RangeSlider/)\n[![Downloads](https://img.shields.io/pypi/dm/RangeSlider)](https://pypi.org/project/RangeSlider)\n\n# RangeSlider 2023.07.2\n\nRange selection widget for Python Tkinter GUI developement in slider widget structure with two handles.\n<!--    \n***Add-on files***\n+ An ipython notebook is provided to illustrate the basic usage of tool. -->\n\n***Updates and Fixes in v2023.07.2 w.r.t v2023.07.1***\n+ Updated: Documentation, included padX and padY in widget calls to avoid confusion with errors. However, the values needs to be updated in case of non-suitability depending on system and used font size, handle size etc.\n+ Added: Sample ipython notebook containing code. (Visit: https://github.com/harshvinay752/RangeSlider/blob/1a068138c63ca61ccc734e71c27201e7a851c65a/sample.ipynb)\n\n***Updates and Fixes in v2023.07.1 w.r.t v2022.12.1***\n+ Fixed: Error in updation of UI in absence of step markers.\n+ Fixed: Error in initialisation of handle values. (Closing the issue: https://github.com/harshvinay752/RangeSlider/issues/7#issue-1806570927)\n+ Added: Complimentary check for correct [step_size] parameter in case of usage of step markers.\n+ Fixed: Updated example code in documentation.\n\n***Updates and Fixes in v2022.12.1 w.r.t. v2021.7.4***\n+ Added option to change font color of label (Merged from: https://github.com/RWitak)\n+ Improved and added option to set initial value of handles. (Merged from: https://github.com/sebasj13)\n\nNote: In order to set the initial values -- declare initial value to the handle variable, if undeclared both handles will be set to min_val. See example in Usage section.\n+ Added option to set step size. (Closing the issue: https://github.com/harshvinay752/RangeSlider/issues/4#issue-1451264874)\n+ Added option to display step points on the bar, with added color option.\n+ Added option to (dis)allow the handles to cross each other.\n+ Added option to force(or set) handle value. (Both by value or normalised position). (Closing the issue: https://github.com/harshvinay752/RangeSlider/issues/1#issue-1050521371)\n\n***Features:***\n+ Range selection\n+ Vertical as well as horizontal widget\n+ Option for showing current value of handle\n+ Customizable handle with default circular handle offering color choice or using image as handle\n+ Ability to bind a tkinter variable, making it easier to check for slider movement\n+ Custom font and position for value text\n+ Customizable value precision\n+ Custom suffix option\n+ Many others...\n\n# Preview\n[preview.png] image file in repository.\n\n## Usage\n\n***Importing required sliders***\n\nFor horizontal RangeSlider:\n```\nfrom RangeSlider.RangeSlider import RangeSliderH \n```\n\nFor vertical RangeSlider:\n```\nfrom RangeSlider.RangeSlider import RangeSliderV\n```\n\nFor both horizontal and vertical RangeSlider:\n```\nfrom RangeSlider.RangeSlider import RangeSliderH, RangeSliderV\n```\n\n***Creating Simple RangeSlider widget:***\n```\nfrom tkinter.ttk import *\nimport tkinter as tk\n \nroot = tk.Tk()\n \nhLeft = tk.DoubleVar(value = 0.2)  #left handle variable initialised to value 0.2\nhRight = tk.DoubleVar(value = 0.85)  #right handle variable initialised to value 0.85\nhSlider = RangeSliderH( root , [hLeft, hRight] , padX = 12)   #horizontal slider, [padX] value might be needed to be different depending on system, font and handle size. Usually [padX] = 12 serves,\n                                                              #otherwise a recommended value will be shown through an error message\nhSlider.pack()   # or grid or place method could be used\n\nvBottom = tk.DoubleVar(value = 0)   #bottom handle variable\nvTop = tk.DoubleVar(value = 1)   #top handle variable\nvSlider = RangeSliderV( root, [vBottom, vTop] , padY = 12)    #vertical slider, [padY] value might be needed to be different depending on system, font and handle size. Usually [padY] = 12 serves,\n                                                              #otherwise a recommended value will be shown through an error message\nvSlider.pack()  # or grid or place method could be used\n\nroot.mainloop()\n```\n\n***Getting current value***\n```\nprint ( hSlider.getValues() )  #return type list of format [ left handle value, right handle value ]\nprint ( vSlider.getValues() )  #return type list of format [ bottom handle value, top handle value ]\n```\n\n***Force value***\n```\nhSlider.forceValues([0.2, 0.67])  #returns None\nvSlider.forceValues([0.62, 0.85])  #returns None\n```\n\n***Callback on value change***\n``` \ndef doSomething():\n    print ('I was called.')\n\nhLeft.trace_add('w', doSomething)\nhRight.trace_add('w', doSomething)\nvBottom.trace_add('w', doSomething)\nvTop.trace_add('w', doSomething)\n```\n***Attributes***\n\n*For RangeSliderH*:\n\n|Attribute|Default Value|Acceptable Value(s) or Description|Release Comment|\n|--|--|--|--|\n|master| N/A | parent like Tk instance, TopLevel, or Frame etc.|v2021.7.4|\n|variables| N/A | list of DoubleVar of length two in order of left handle and right handle|v2021.7.4|\n|Width| 400 | width of widget in px |v2021.7.4|\n|Height| 80 | height of widget in px |v2021.7.4|\n|min_val| 0 | minimum value |v2021.7.4|\n|max_val| 1 | maximum value |v2021.7.4|\n|padX| 3 | padding from both left and right in px |v2021.7.4|\n|image_anchorR| CENTER |anchor value for right handle if image is used as handle  -  N, NE, E, SE, S, SW, W, NW, CENTER |v2021.7.4|\n|image_anchorL| CENTER |anchor value for left handle if image is used as handle  -  N, NE, E, SE, S, SW, W, NW, CENTER |v2021.7.4|\n|imageL| None | PhotoImage instance for imaged left handle |v2021.7.4|\n|imageR| None | PhotoImage instance for imaged right handle |v2021.7.4|\n|auto| True | True for automatic circular colored handle, False for imaged handle |v2021.7.4|\n|line_width| 3 | width of widget track in px |v2021.7.4|\n|bar_radius| 10 | radius of outer circle of handle |v2021.7.4|\n|bar_color_inner| '#5c8a8a' | hex value of color for inner circle in string format |v2021.7.4|\n|bar_color_outer| '#c2d6d6' | hex value of color for inner circle in string format |v2021.7.4|\n|line_s_color| '#0a50ff' | hex value of color for selected portion for widget track in string format |v2021.7.4|\n|line_color| '#476b6b' | hex value of color for unselected portion for widget track in string format|v2021.7.4|\n|bgColor| '#ffffff' | hex value of color for background of widget in string format |v2021.7.4|\n|step_marker_color| '#ffffff' | hex value of color in string format for steps marked on widget bar|__v2022.12.1__|\n|font_color| '#000000' | hex value of color for font of widget in string format |__v2022.12.1__|\n|show_value| True | True if current value of handle are intended; otherwise False |v2021.7.4|\n|digit_precision| '.1f' | precision format for shown value |v2021.7.4|\n|valueSide| 'TOP' | 'TOP' if shown value intended above the handle or 'BOTTOM' if shown value intended below the handle |v2021.7.4|\n|font_family| 'Times' | font family ( all font families supported by tkinter are acceptable )|v2021.7.4|\n|font_size| 16 | font size in pt |v2021.7.4|\n|suffix| \"\" | suffix for shown value |v2021.7.4|\n|step_size| 0 | step size of handle movement, step_size equal to 0 implies continuous movement subject to system architecture floating point resolution |__v2022.12.1__|\n|step_marker| False | True if to display step markers on bar; otherwise False |__v2022.12.1__|\n|cross_each_other| False | True if handles can cross each other |__v2022.12.1__|\n\n*For RangeSliderV:*\n\n|Attribute|Default Value|Acceptable Value(s)|Release Comment|\n|--|--|--|--|\n|master| N/A | parent like Tk instance, TopLevel, or Frame etc.|v2021.7.4|\n|variables| N/A | list of DoubleVar of length two in order of lower handle and upper handle|v2021.7.4|\n|Width| 80 | width of widget in px |v2021.7.4|\n|Height| 400 | height of widget in px |v2021.7.4|\n|min_val| 0 | minimum value |v2021.7.4|\n|max_val| 1 | maximum value |v2021.7.4|\n|padY| 3 | padding from both top and bottom in px |v2021.7.4|\n|image_anchorU| CENTER |anchor value for upper handle if image is used as handle  -  N, NE, E, SE, S, SW, W, NW, CENTER |v2021.7.4|\n|image_anchorL| CENTER |anchor value for lower handle if image is used as handle  -  N, NE, E, SE, S, SW, W, NW, CENTER |v2021.7.4|\n|imageL| None | PhotoImage instance for imaged lower handle |v2021.7.4|\n|imageU| None | PhotoImage instance for imaged upper handle |v2021.7.4|\n|auto| True | True for automatic circular colored handle, False for imaged handle |v2021.7.4|\n|line_width| 3 | width of widget track in px |v2021.7.4|\n|bar_radius| 10 | radius of outer circle of handle |v2021.7.4|\n|bar_color_inner| '#5c8a8a' | hex value of color for inner circle in string format |v2021.7.4|\n|bar_color_outer| '#c2d6d6' | hex value of color for inner circle in string format |v2021.7.4|\n|line_s_color| '#0a50ff' | hex value of color for selected portion for widget track in string format |v2021.7.4|\n|line_color| '#476b6b' | hex value of color for unselected portion for widget track in string format|v2021.7.4|\n|bgColor| '#ffffff' | hex value of color for background of widget in string format |v2021.7.4|\n|step_marker_color| '#ffffff' | hex value of color in string format for steps marked on widget bar|__v2022.12.1__|\n|font_color| '#000000' | hex value of color for font of widget in string format |__v2022.12.1__|\n|show_value| True | True if current value of handle are intended; otherwise False |v2021.7.4|\n|digit_precision| '.1f' | precision format for shown value |v2021.7.4|\n|valueSide| 'TOP' | 'TOP' if shown value intended above the handle or 'BOTTOM' if shown value intended below the handle |v2021.7.4|\n|font_family| 'Times' | font family ( all font families supported by tkinter are acceptable )|v2021.7.4|\n|font_size| 16 | font size in pt |v2021.7.4|\n|suffix| \"\" | suffix for shown value |v2021.7.4|\n|step_size| 0 | step size of handle movement, step_size equal to 0 implies continuous movement subject to system architecture floating point resolution |__v2022.12.1__|\n|step_marker| False | True if to display step markers on bar; otherwise False |__v2022.12.1__|\n|cross_each_other| False | True if handles can cross each other |__v2022.12.1__|\n\n***Additional Notes for attributes***\n+ if show_value is False, digit_precision, valueSide, font_family, font_size and suffix have no effect\n+ if auto is True, imageL, imageU, image_anchorL, image_anchorR and image_anchorU have no effect\n+ if auto is False, bar_radius, bar_color_inner, bar_color_outer have no effect\n+ if step_size is zero, step_marker will not be made\n\n***Exceptions raised***\n|Condition|Exception|\n|--|--|\n|if auto is True and either imageL or imageU or imageR or combination out of three is also given | Exception raised: \"Can't decide if to use auto shape or images!\" |\n| if auto is False and one of the image handles is missing | Exception raised: \"Handle for one image missing.\" |\n| if auto is False and dimensions for both handles provided are not same | Exception raised : \"Image dimensions incompatible, both handles should have same height and width respectively.\" |\n| if Width or Height or padX or padY are not sufficient to render the widget with all features visible safely | Exception raised : $dimension$ not suitable with suggestions to avoid it |\n\n***Functions***\n\n|Function|Arguments|Output Format|\n|--|--|--|\n|getValues()|NIL|value of handle variables in list format in the same order as given in object definition, returned values lie between min_val and max_val|\n|getPos()|NIL|normalised value of handle variables in list format in the same order as given in object definition, returned values lie between 0 and 1|\n|forceValues(values)|values : a list of two values each indicating value of handle, values must be between min_val and max_val|return None|\n|forcePos(pos)|pos : a list of two normalised values each indicating value of handle, values must be between 0 and 1|return None|\n\nNote: The relation between value ($v_i$) and normalised value ($n_i$) of $i^{th}$ handle defined for a slider with max_val of $v_<$ and min_val of $v_>$ is given by:\n\n$\\begin{equation}\nn_i = \\frac{v_i - v_>}{v_<-v_>}\n\\end{equation}$\n\n\n# Words of Developer\n\nThis is the second version of this library. It is one of its kind widget for tkinter. When I was developing a tool for my college project I found that at the time no inbuilt or external tool is available for tkinter allowing range selection. However, range selection is a high demand tool specially for applications dealing with data visualizations. I would appreciate any developer from any community who wants to contribute to this project.\n\nI thank RWitak and Sebastian for contributing to this project.\n\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Python tkinter widget for range selection in slider widget structure with two handles",
    "version": "2023.7.2",
    "project_urls": {
        "Download": "https://github.com/harshvinay752/RangeSlider/archive/refs/tags/2023.07.2.tar.gz",
        "Homepage": "https://github.com/harshvinay752/RangeSlider"
    },
    "split_keywords": [
        "python",
        "tkinter",
        "range",
        "slider",
        "two handle",
        "selector",
        "widget"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5560a2e25e323adda95ee5937fb0f0d6d552d632e9de8ac0b10637445a929466",
                "md5": "89d6e26d481f815bbcff14fec05719af",
                "sha256": "2b7aa56438452e70ce3e011d7aad7f4dc8b90fab63b37720b6e0dbd3f3a09ba6"
            },
            "downloads": -1,
            "filename": "RangeSlider-2023.7.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "89d6e26d481f815bbcff14fec05719af",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 10247,
            "upload_time": "2023-07-18T08:38:08",
            "upload_time_iso_8601": "2023-07-18T08:38:08.328499Z",
            "url": "https://files.pythonhosted.org/packages/55/60/a2e25e323adda95ee5937fb0f0d6d552d632e9de8ac0b10637445a929466/RangeSlider-2023.7.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "47fd460e4c9282d43520cd740abd2312a446b6e57e54c974b57c02d03f0fd544",
                "md5": "2c86110d200c029d140e5636e4ba0a87",
                "sha256": "6ad39340b0a848dc516d0ac9e8796951c4fb295511717ac67d56694566660f9d"
            },
            "downloads": -1,
            "filename": "RangeSlider-2023.7.2.tar.gz",
            "has_sig": false,
            "md5_digest": "2c86110d200c029d140e5636e4ba0a87",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 14646,
            "upload_time": "2023-07-18T08:38:11",
            "upload_time_iso_8601": "2023-07-18T08:38:11.026643Z",
            "url": "https://files.pythonhosted.org/packages/47/fd/460e4c9282d43520cd740abd2312a446b6e57e54c974b57c02d03f0fd544/RangeSlider-2023.7.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-07-18 08:38:11",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "harshvinay752",
    "github_project": "RangeSlider",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "rangeslider"
}
        
Elapsed time: 0.18196s