Test drive OpenSesame 3.2 "Kafkaesque Koffka" with many new features!
OpenSesame 3.2 is currently under development and should not be used in production!
The next major series of OpenSesame will be 3.2 Kitschy Kuhn. This update will bring several awesome new features, which are described below. For more information, see:
Pre-release packages and Python wheel:
Pre-release repository for Ubuntu:
sudo add-apt-repository ppa:smathot/opensesame-kuhn # only for testing 3.2
sudo add-apt-repository ppa:smathot/cogscinl
sudo apt-get update
sudo apt-get install opensesame
Changes in 3.2
OpenSesame 3.2 brings several major improvements that make it even easier to develop experiments. OpenSesame 3.2 is fully backwards compatible with 3.1.
A better, PEP-8-compliant Python API
PEP-8 is a style guide for Python. Much modern Python software follows the PEP-8 guidelines—but, for historical reasons, OpenSesame didn't. As of 3.2, the public API now follows the guideline that the names of classes (and factory functions that generate classes) should be CamelCase
, while names of objects and functions should be underscore_case
. Practically speaking, this means that you now create Canvas
object as follows:
my_canvas = Canvas() # Note the capital C!
my_canvas.fixdot()
my_canvas.show())
Of course, the old underscore_case
names are still available as aliases, so backwards compatibility is preserved.
The API for forms has also been simplified. You no longer need to import libopensesame.widgets
, and you no longer need to pass exp
as the first argument:
form = Form()
button = Button(text=u'Ok!')
form.set_widget(button, (0, 0))
form._exec()
Access and modify Canvas elements
Elements of a Canvas
are now objects that can be named, accessed, and modified. This means that you no longer need to redraw an entire canvas to change a single element. For example, you can draw a rotating arm as follows:
my_canvas = Canvas()
my_canvas['arm'] = Line(0, 0, 0, 0)
for x, y in xy_circle(n=100, rho=100):
my_canvas['arm'].ex = x
my_canvas['arm'].ey = y
my_canvas.show()
clock.sleep(10)
The SKETCHPAD also allows you to name elements.
For more information, see:
Improved support for HTML and non-Latin script
Text is now rendered by Qt, which is a modern library (the same library that is also used for the graphical interface). This means that you can now use real HTML in your text. This also means that left-to-right script and other non-Latin scripts are rendered much better.
Improved form performance
Forms are now much faster when using the psycho and xpyriment backends. This is due to the fact that Canvas
elements can now be updated individually, as described above.
Validation of form input
You can now validate the input of a form; that is, you can prevent a form from closing until certain criteria are met. In addition, you can exclude characters as input from TextInput
widgets.
For more information, see:
Comments
I just want to express my disappointment about this update not being called Kinky Kuhn
+1 KinkyKuhn
If you file a bug report, I'll see what I can do. It would fit nicely with the theme set by Frisky Freud (0.27).
Check out SigmundAI.eu for our OpenSesame AI assistant!
The android back-end doesn't work in the 3.2 version
@harsh_shukla This was the case in earlier pre-releases. If you download the latest, the
droid
backend should work again.Check out SigmundAI.eu for our OpenSesame AI assistant!
Thank you!
New Version: Problem with renaming variables. If you rename, click enter, the name is deleted.
Great update--modifying canvas elements was the only feature I had been missing in the previous version!
One issue I had with 3.2.0a30 (but I'm not sure if it's a bug): When running a form using a custom slider widget (that I found somewhere in the forums), I'll get:
exception message: 'Form' object has no attribute 'render'
as soon as I try to drag the slider. It works fine in 3.1.9.
Thanks!
Hi Georg,
This slider widget is no longer compatible because of the changes to the
Canvas
object. So I'm afraid it will have to be re-written!Cheers,
Sebastiaan
Check out SigmundAI.eu for our OpenSesame AI assistant!