in Java language, here is the original code:
import controlP5.*;
ControlP5 cp5;
int myColor = color(0, 0, 0);
int sliderValue = 100;
int sliderTicks1 = 100;
void setup() {
size(700, 400);
noStroke();
cp5 = new ControlP5(this);
cp5.addSlider(“slider”)
.setPosition(100, 305)
.setSize(200, 20)
.setRange(0, 200)
.setValue(128)
;
}
void draw() {
background(0);
}
void slider(float theColor) {
myColor = color(theColor);
println("a slider event. setting background to "+theColor);
}
It work well: When I change the slider, the “void slider” will be activated and print what I want to.
But when I use python to write this, the “def slider” or other ControlEvent will not active. How to make ControlP5 work correctly in python Mode? Here’s the code below:
add_library(‘controlP5’)
def setup():
size(700,400)
noStroke()
global slider
cp5 = ControlP5(this)
slider = cp5.addSlider("slider")
slider.setPosition(100, 305)
slider.setSize(200, 20)
slider.setRange(0, 200)
slider.setValue(128)
def draw():
background(0)
def slider(theColor):
myColor = color(theColor)
print("a slider event.setting background to " + theColor)
solub
June 20, 2018, 8:27am
2
I think you’re looking for the .value
method:
def setup():
global slider
size(700,400, P2D)
cp5 = ControlP5(this)
slider = cp5.addSlider("slider").setPosition(100, 305).setSize(200, 20).setRange(0, 200).setValue(128)
def draw():
background(slider.value)
print slider.value
Thank you solub, actually I want to active a function while slider value changed.
Maybe in JAVA , void ControlEvent
can work. But in python mode def ControlEvent
will not be avtivated.
solub
June 20, 2018, 8:50am
4
Could you please elaborate further on what you’re trying to achieve ? What is that slider
function for exactely ?
In JAVA code:
import controlP5.*;
ControlP5 cp5;
Slider slider;
int myColor = color(0, 0, 0);
int sliderValue = 100;
int sliderTicks1 = 100;
void setup() {
size(700, 400);
noStroke();
cp5 = new ControlP5(this);
slider = cp5.addSlider(“slider”)
.setPosition(100, 305)
.setSize(200, 20)
.setRange(0, 200)
.setValue(128)
;
}
void draw() {
background(0);
}
void controlEvent(ControlEvent theEvent){
if (theEvent.isFrom(slider)){
myFunction();
}
}
when I change the slider value, it will activate myFunction()
. Actually in myFunction
I want to use a slider to control the controlP5 Group’s number in realTime. But nothing happend in python mode:
add_library(‘controlP5’)
def setup():
size(700,400)
noStroke()
global slider
cp5 = ControlP5(this)
slider = cp5.addSlider(“slider”)
slider.setPosition(100, 305)
slider.setSize(200, 20)
slider.setRange(0, 200)
def draw():
background(0)
def controlEvent(theEvent):
global slider
if (theEvent.isFrom(slider)):
myFunction()
"""
ControlP5::addListener() (v1.1)
GoToLoop (2018-Jun-20)
https://Discourse.Processing.org/t/
how-to-active-controlevent-in-controlp5-python-mode/1113/6
"""
add_library('controlP5')
bg = 0200
def setup():
size(400, 300)
global slider
slider = ControlP5(this).\
addSlider('slider').\
setSize(width>>1, 20).\
setPosition(width>>2, height>>1).\
setRange(0, 0xff).\
setValue(bg).\
addListener(sliderListener)
def draw(): background(bg)
def sliderListener(evt):
global bg
bg = int(evt.getValue())
1 Like
Thank you GoToLoop! That works.
One more step if you don’t mind, what if I want to listen the specific slider for example: Slider01?
And where can I get the information that I can use def sliderListener
to listen sliders? I can’t find this function in controlP5 website libraries
Your Java version relies on method isFrom() . So that’s what I did now:
"""
ControlP5::addListener() (v1.2)
GoToLoop (2018-Jun-20)
https://Discourse.Processing.org/t/
how-to-active-controlevent-in-controlp5-python-mode/1113/8
"""
add_library('controlP5')
bg = 0200
def setup():
size(400, 300)
global slider
slider = ControlP5(this).\
addSlider('slider').\
setSize(width>>1, 20).\
setPosition(width>>2, height>>1).\
setRange(0, 0xff).\
setValue(bg).\
addListener(sliderListener)
def draw(): background(bg)
def sliderListener(evt):
global bg
if evt.isFrom(slider): bg = int(evt.getValue())
I’ve found that out at “Python Mode Examples”.
Although I already knew about the class
extending ControlListener approach.
Hit CTRL+SHIFT+O, then go to “Contributed Libraries in Python” → “ControlP5” → “Textfield”.
1 Like
I found a new way to achieve that, bro:
Slider01 = ControlP5(this).
…
addListener(youCanNameThis)
def youCanNameThis(evt):
function()
That’s listen to Slider01 only.
But my sketch already just listens to slider only!
1 Like