def my_form_validator(): """Checks whether both the gender and age fields have been filled out""" return var.gender != u'no' and var.lat != u'no' and var.lettresNP != u'' and var.age != u'' def filter_digits(ch): """Allows only digit characters as input""" return ch in u'0123456789' def filter_lettres(ch): return ch in u'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZzÀàÂâÆæÇçÉéÈèÊêËëÎîÏïÔôŒœÙùÛûÜüŸÿ' # Define all widgets button_next = Button(text=u'Suivant') label_gender= Label(u'Votre genre') checkbox_male = Checkbox(text=u'Masculin', group=u'gender', var=u'gender') checkbox_female = Checkbox(text=u'Féminin', group=u'gender', var=u'gender') checkbox_other = Checkbox(text=u'Autre', group=u'gender', var=u'gender') label_lat= Label(u'Latéralité') checkbox_droit = Checkbox(text=u'Droitier(e)', group=u'lat', var=u'lat') checkbox_gauch = Checkbox(text=u'Gaucher(e)', group=u'lat', var=u'lat') checkbox_ambi = Checkbox(text=u'Ambidextre', group=u'lat', var=u'lat') #label_age = Label(u'Votre âge') # Specify a key filter so that only digits are accepted as text input input_age = TextInput(stub=u'Âge …', var=u'age', key_filter=filter_digits) label_infos = Label(u'Quelques informations') label_lettresNP = Label(u'Mentionnez les deux premières lettres de votre nom et de votre prénom', center=False) input_lettresNP = TextInput(stub=u'…', var=u'lettresNP', key_filter=filter_lettres) # Build the form. Specify a validator function to make sure that the form is # completed. my_form = Form(validator=my_form_validator, rows=[1,1,1,1,1,1], cols=[1,1,1,1,1,1,1], margins=(50,50,50,50), spacing=25) my_form.set_widget(label_infos, (0, 0), colspan=7) my_form.set_widget(label_lettresNP, (0, 1), colspan=6) my_form.set_widget(input_lettresNP, (6, 1)) my_form.set_widget(label_gender, (0, 2)) my_form.set_widget(checkbox_male, (1, 2), colspan=2) my_form.set_widget(checkbox_female, (3, 2), colspan=2) my_form.set_widget(checkbox_other, (5, 2), colspan=2) my_form.set_widget(label_lat, (0, 3)) my_form.set_widget(checkbox_droit, (1, 3), colspan=2) my_form.set_widget(checkbox_gauch, (3, 3), colspan=2) my_form.set_widget(checkbox_ambi, (5, 3), colspan=2) #my_form.set_widget(label_age, (0, 4)) my_form.set_widget(input_age, (0, 4), colspan=7) my_form.set_widget(button_next, (0, 5), colspan=7) my_form._exec()