Guide¶
This guide will walk you through using psforms. Let’s start by expanding on the example from the ReadMe.
from psforms import (Form, IntField, StringField,
StringOptionField, BoolField)
class MyForm(Form):
'''My amazing form, useful in many scenarios.'''
title = 'My Form'
int_field = IntField('Integer Value')
str_field = StringOptionField('String Value', options=['A', 'B', 'C'])
bool_field = BoolField('Boolean Value')
strb_field = StringField('String Value B')
The psforms.Form is a factory for creating various types of forms.
psforms.Field attributes are used to describe the input fields. psforms.Form subclasses are only skeletons of a widget, waiting to be created. To create an actual form widget, use one of following methods, all of which start with the prefix as_.
Forms as Dialogs¶
myform_dialog = MyForm.as_dialog()
if myform_dialog.exec_():
print dialog.get_value()
The as_dialog() returns a psforms.Dialog instance with the
fields specified in MyForm. psforms.Dialog accepts two
keyword arguments; columns and parent. get_value() returns a FormData including the names and values for all the fields in MyForm. FormData supports both dictionary access and attribute access.
In this next example ParentWidget refers to a parent applications QtGui.QWidget or QtGui.QMainWindow.
myform_dialog = MyForm.as_dialog(columns=2, parent=ParentWidget)
The previous examples create a modal dialog, which blocks all other PySide widgets from receiving input until after the dialog is accepted or rejected.
Forms as Widgets and Groups¶
You can also get a Form as a mulit-column psforms.Widget or
psforms.Group.
myform_widget = MyForm.as_widget(columns=2)
myform_group = MyForm.as_group(columns=1, collapsable=True)
The above psforms.Widget and psforms.Group are derived from
a standard QtGui.QWidget and a standard QtGui.QGroupBox; therefore, they can be added to any PySide layout. The collapsable parameter
refers to whether or not the entire psforms.Group can be collapsed. Both of these also have a get_value() like the dialog above.
Getting the value of a control¶
All psform Field controls share the same api. You can use set_value() to set them and get_value() to retrieve them.
myform_dialog.int_field.set_value(40)
assert myform_dialog.int_field.get_value() == 40
All controls also have changed signal that are emitted whenever their values are modified by user interaction.