Sign in with your CogSci, Facebook, Google, or Twitter account.

Or register to create a new account.

We'll use your information only for signing in to this forum.

Supported by

[solved] Vertical Slider rating scale?

AbulafiaAbulafia Posts: 10
edited July 2015 in OpenSesame

Is there any possible way to invert slider scale to be vertical (analog scale in PsychoPy for example can not be turned to vertical position)? I`m not programmer in any sense so some detailed instructions are greatly appreciated. Thank you!


  • eduardeduard Posts: 1,001
    edited 8:39PM


    I don't think you can avoid having to program a bit yourself. However, it is not that hard, and there are many discussions dealing with this topic here in the Forum.

    As a starter, you could have a look on this discussion here : http://forum.cogsci.nl/index.php?p=/discussion/1415/solved-slider-and-touch-screen/p1

    It describes rather detailed how to implement a horizontal slider. All you would need to do, is finding and swapping the x and y coordinates accordingly.

    I hope this is what you had in mind?

    Give it a shot, and if you need more help, just ask again.

    Good luck ,


  • AbulafiaAbulafia Posts: 10
    edited 8:39PM

    Thank you for your reply. Main idea is to force slider to move upwards while mouse moves upwards, opposite direction accordingly. I`ve tried to change code but have only achieved mouse movement inversion. It looks like slider moves only in x axis. Main goal is y axis increment.

  • eduardeduard Posts: 1,001
    edited 8:39PM

    This should do the trick, but you probably need to tweak the code a bit to make it prettier.

    from openexp.canvas import canvas
    from openexp.mouse import mouse
    my_canvas = canvas(self.experiment)
    my_mouse = mouse(self.experiment, timeout=20)
    # Set slider dimensions
    slider_w = 500
    slider_h = 100
    slider_x = self.get("width")/2-slider_w/2
    slider_y = self.get("height")/2-slider_h/2
    while True:
            # Determine the slider fill based on the mouse position
            pos, time = my_mouse.get_pos()
            x, y = pos
            # If you want to re-enter the slider loop, you need a variable that can be True
            # or False. Initialized as being False. Only if mouse on slider, it becomes True
            enter = False
            if not (x < slider_x - slider_w/2) or (x > slider_x + slider_w/2):
                  enter = True
            while enter:
                # Determine the slider fill based on the mouse position
                 pos, time = my_mouse.get_pos()
                 x, y = pos
                 # Break when the mouse leaves the slider area
                 if (x < slider_x - slider_w/2) or (x > slider_x + slider_w/2):
                 slider_fill = min(slider_w, max(0, y-slider_y))
                 # Draw some text (this can be anything)
                 my_canvas.text("Question goes here", y=slider_y-100)   
                 my_canvas.text("Click to accept ...", y=slider_y+100)
                 # Draw the slider frame
                 my_canvas.rect(slider_x, slider_y, slider_h, slider_w)
                 # Draw the slider fill
                 my_canvas.rect(slider_x, slider_y, slider_h, slider_fill, fill=True)               
                 # Draw the mouse cursor 
                 my_canvas.arrow(x+5, y+10, x, y)
            # Poll the mouse for buttonclicks
            button, position, timestamp = my_mouse.get_click(timeout = 20)
            if button != None:
    slider_percent = 100.0*slider_fill/slider_w     
    self.experiment.set("slider_percent", slider_percent)
  • AbulafiaAbulafia Posts: 10
    edited 8:39PM

    I would like to thank you so much. With your hints I have achieved more than I expected first. Quite amazing OpenSesame actually is.
    The only problem left to solve is output data. Currently after clicking exported csv file is completely empty. I have not dug deeply into documentation yet.
    Thank you once again!

  • eduardeduard Posts: 1,001
    edited 8:39PM

    Nice to hear.

    You probably wanna have a look at the logger item (See here)


Sign In or Register to comment.