| # |
| # Example 2 - Using fl in python with callbacks. |
| # |
| # The form is named 'main_form' and resides on file 'test_cb.fd'. |
| # It has three objects named button1, button2 and exitbutton. |
| # All buttons have callbacks with the same names as their corresponding |
| # buttons but with CB appended. |
| # |
| import fl # The forms library |
| import FL # Symbolic constants for the above |
| import flp # The module to parse .fd files |
| import sys |
| |
| # The following struct is created to hold the instance variables |
| # main_form, button1, button2 and exitbutton. |
| |
| class myform: |
| # |
| # The constructor parses and creates the form, but doesn't |
| # display it (yet). |
| def __init__(self, number): |
| # |
| # First we parse the form |
| parsetree = flp.parse_form('test_cb', 'main_form') |
| # |
| # Next we create it |
| |
| flp.create_full_form(self, parsetree) |
| |
| # And keep our number |
| self.number = number |
| |
| # |
| # The show function displays the form. It doesn't do any interaction, |
| # though. |
| def show(self): |
| self.main_form.show_form(FL.PLACE_SIZE, 1, '') |
| |
| # The callback functions |
| def button1CB(self, obj, arg): |
| print 'Button 1 pressed on form', self.number |
| |
| def button2CB(self, obj, arg): |
| print 'Button 2 pressed on form', self.number |
| |
| def exitbuttonCB(self, obj, arg): |
| print 'Ok, bye bye' |
| sys.exit(0) |
| |
| # |
| # The main program. Instantiate two variables of the forms class |
| # and interact with them. |
| |
| form1 = myform(1) |
| form2 = myform(2) |
| |
| form1.show() |
| form2.show() |
| |
| obj = fl.do_forms() |
| print 'do_forms() returned. This should not happen. obj=', obj |