Herr Goebel,

Thank you for your reply. I am attaching the files of my small application 
and some messages from the system in the hope you can help me sort out what 
I need to do to solve the problem. The application runs fine un-compiled.
The whole process in making the executable though is beyond me.
I am not "ein Informatiker" so I am having trouble even understanding the 
issues, let alone how to resolve them.

My application consists of three files:

wisdom_tooth.py
wisdom_tooth.rsrc.py
wisdom_tooth_thumbnail.JPG

The application was written with:

Python 2.7.2
wxPyhon 2.8.12.1
Pythoncard 0.8.2

Development version of Pyinstaller was used in attempt to make executable 
(on a 64 bit windows machine).

The file "exe_creation.txt" contains the output from the cmdWindow while 
attempting to produce the executable.

The file "running_exe_from_dist_dir_out_of_cmdWindow.txt" shows the results 
when attempting to run the executable.

Any insight you can provide would be much appreciated.

Mit freundlichen Gruessen aus Canada,

Mark Heinze,


On Tuesday, April 17, 2012 5:33:05 AM UTC-4, Hartmut Goebel wrote:
>
> Am 17.04.2012 02:07, schrieb Mark Heinze:
> > Directories called build and dist were created with a bunch of content.
> > Double clicking the exe file very briefly yields a system window (I
> > think cause it's small and black), then disappears.
> >
>
> This sound as if you'd want to run your the .exe from a
> shell/cmd-Windows to get any error messages. Of course you'd need to use
> the .exe found in the dist directory.
>
> -- 
> Schönen Gruß - Regards
> Hartmut Goebel
> Dipl.-Informatiker (univ.), CISSP, CSSLP
>
> Goebel Consult 
> Spezialist für IT-Sicherheit in komplexen Umgebungen
> http://www.goebel-consult.de
>
> Monatliche Kolumne: http://www.cissp-gefluester.de/
> Goebel Consult ist Mitglied bei http://www.7-it.de
>
>
>
On Tuesday, April 17, 2012 5:33:05 AM UTC-4, Hartmut Goebel wrote:
>
> Am 17.04.2012 02:07, schrieb Mark Heinze:
> > Directories called build and dist were created with a bunch of content.
> > Double clicking the exe file very briefly yields a system window (I
> > think cause it's small and black), then disappears.
> >
>
> This sound as if you'd want to run your the .exe from a
> shell/cmd-Windows to get any error messages. Of course you'd need to use
> the .exe found in the dist directory.
>
> -- 
> Schönen Gruß - Regards
> Hartmut Goebel
> Dipl.-Informatiker (univ.), CISSP, CSSLP
>
> Goebel Consult 
> Spezialist für IT-Sicherheit in komplexen Umgebungen
> http://www.goebel-consult.de
>
> Monatliche Kolumne: http://www.cissp-gefluester.de/
> Goebel Consult ist Mitglied bei http://www.7-it.de
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"PyInstaller" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/pyinstaller/-/x1Gz2BAxpF4J.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/pyinstaller?hl=en.


c:\>cd c:\python27

c:\Python27>python c:\pyinstaller\pyinstaller.py -F C:\Python27\mark27\myexe\WIS
DOM_TOOTH.py
INFO: wrote c:\Python27\WISDOM_TOOTH.spec
INFO: Testing for ability to set icons, version resources...
INFO: ... resource update available
INFO: UPX is not available.
INFO: checking Analysis
INFO: building because out00-Analysis.toc is bad
INFO: running Analysis out00-Analysis.toc
INFO: Analyzing c:\pyinstaller\support\_pyi_bootstrap.py
INFO: Analyzing C:\Python27\mark27\myexe\WISDOM_TOOTH.py
INFO: Hidden import 'encodings' has been found otherwise
INFO: Adding Microsoft.VC90.CRT to dependent assemblies of final executable
INFO: Searching for assembly amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022
.8_none ...
INFO: Found manifest C:\Windows\WinSxS\Manifests\amd64_microsoft.vc90.crt_1fc8b3
b9a1e18e3b_9.0.21022.8_none_750b37ff97f4f68b.manifest
INFO: Searching for file msvcr90.dll
INFO: Found file C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0
.21022.8_none_750b37ff97f4f68b\msvcr90.dll
INFO: Searching for file msvcp90.dll
INFO: Found file C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0
.21022.8_none_750b37ff97f4f68b\msvcp90.dll
INFO: Searching for file msvcm90.dll
INFO: Found file C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0
.21022.8_none_750b37ff97f4f68b\msvcm90.dll
INFO: Adding Microsoft.Windows.Common-Controls to dependent assemblies of final
executable
ERROR: lib not found: gdiplus.dll dependency of c:\Python27\lib\site-packages\wx
-2.8-msw-unicode\wx\wxmsw28uh_core_vc.dll
INFO: Warnings written to c:\Python27\build\pyi.win32\WISDOM_TOOTH\warnWISDOM_TO
OTH.txt
INFO: checking PYZ
INFO: building because toc changed
INFO: building PYZ out01-PYZ.toc
INFO: checking PKG
INFO: building because c:\Python27\build\pyi.win32\WISDOM_TOOTH\out01-PYZ.pyz ch
anged
INFO: building PKG out03-PKG.pkg
INFO: checking EXE
INFO: rebuilding out02-EXE.toc because WISDOM_TOOTH.exe missing
INFO: building EXE from out02-EXE.toc
INFO: Appending archive to EXE c:\Python27\dist\WISDOM_TOOTH.exe

c:\Python27>
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\Mark>cd
C:\Users\Mark

C:\Users\Mark>cd..

C:\Users>cd..

C:\>cd python27\dist

C:\Python27\dist>wisdom_tooth
Traceback (most recent call last):
  File "<string>", line 11, in <module>
  File "c:\pyinstaller\PyInstaller\loader\iu.py", line 431, in importHook
    mod = self.doimport(nm, ctx, ctx + '.' + nm)
  File "c:\pyinstaller\PyInstaller\loader\iu.py", line 480, in doimport
    exec co in mod.__dict__
  File "c:\Python27\build\pyi.win32\WISDOM_TOOTH\out01-PYZ.pyz\PythonCard.dialog
", line 7, in <module>
  File "c:\pyinstaller\PyInstaller\loader\iu.py", line 386, in importHook
    mod = _self_doimport(nm, ctx, fqname)
  File "c:\pyinstaller\PyInstaller\loader\iu.py", line 480, in doimport
    exec co in mod.__dict__
  File "c:\Python27\build\pyi.win32\WISDOM_TOOTH\out01-PYZ.pyz\wx", line 45, in
<module>
  File "c:\pyinstaller\PyInstaller\loader\iu.py", line 386, in importHook
    mod = _self_doimport(nm, ctx, fqname)
  File "c:\pyinstaller\PyInstaller\loader\iu.py", line 480, in doimport
    exec co in mod.__dict__
  File "c:\Python27\build\pyi.win32\WISDOM_TOOTH\out01-PYZ.pyz\wx._core", line 4
, in <module>
  File "c:\pyinstaller\PyInstaller\loader\iu.py", line 409, in importHook
    raise ImportError("No module named %s" % fqname)
ImportError: No module named _core_

C:\Python27\dist>
# WISDOM_TOOTH.py
# 
# Finding Tooth Counts For A Two Stage PTU
# GUI version
# written using Python 2.7.2, PythonCard 0.8.2 and wxPython 2.8.12.1
# by Mark Heinze, 2012-04-14
#---------------------------------------------------------------------
#---------------------------------------------------------------------

import datetime
from PythonCard import dialog, model
import os, sys, csv
import wx

class Train:
    
    def __init__(self, n1, n2, n3, n4, r1, r2, r3, dr):
        self.n1 = n1
        self.n2 = n2
        self.n3 = n3
        self.n4 = n4
        self.r1 = r1
        self.r2 = r2
        self.r3 = r3
        self.dr = dr
        
    def __str__(self):
        msg = '%.i' % self.n1 + '\t' + \
              '%.i' % self.n2 + '\t' + \
              '%.i' % self.n3 + '\t' + \
              '%.i' % self.n4 + '\t' + \
              '%.5f' % self.r1 + '\t' + \
              '%.5f' % self.r2 + '\t' + \
              '%.5f' % self.r3 + '\t' + \
              '%.5f' % self.dr
        return msg

class TrainFinder(model.Background):

    def on_initialize(self, event):
        sc = self.components
        self.UpdateFields()     
        self.get_trains()     
        self.PopulateTable()
        sc.STSliderLabel.visible = False
        sc.SliderCombos.visible  = False        

    def UpdateFields(self):
        sc = self.components
        self.tr = float(sc.textfieldtr.text)
        self.tr_tol = float(sc.textfieldtrtol.text)
        self.xvf = float(sc.textfieldxvf.text)
        self.n1_min = sc.spinn1min.value
        self.n1_max = sc.spinn1max.value
        self.n2_min = sc.spinn2min.value
        self.n2_max = sc.spinn2max.value
        self.n3_min = sc.spinn3min.value
        self.n3_max = sc.spinn3max.value
        self.n4_min = sc.spinn4min.value
        self.n4_max = sc.spinn4max.value
        self.no_var = (self.n1_max - self.n1_min)*(self.n2_max - self.n2_min)*\
                 (self.n3_max - self.n3_min)*(self.n4_max - self.n4_min)
        self.xv = self.tr*self.xvf
        self.xv_invrs = 1/self.xv
        sc.STNoCombinations.text = str(self.no_var)
        sc.STR1R2Range.text = \
                            '* ( limits R1 and R2 to between \n'\
                            + '      ' + str('%.5f' % self.xv_invrs)\
                            + " and " + str('%.5f' % self.xv) + ')'
        sc.btnFindTrains.visible = True       
        sc.SliderCombos.value = 0
        sc.STSliderLabel.visible = True
        sc.SliderCombos.visible = True

    def get_trains(self):
        global trains
        sc = self.components
        trains = []
        for n1 in range(self.n1_min, self.n1_max):
            sc.SliderCombos.value = int((float(n1)/float(self.n1_max))*100)
            for n2 in range(self.n2_min, self.n2_max):
                for n3 in range(self.n3_min, self.n3_max):
                    for n4 in range(self.n4_min, self.n4_max):
                        r1 = float(n1)/float(n2)
                        r2 = float(n3)/float(n4)
                        r3 = r1*r2
                        dr = abs(self.tr - r3)
                        if n1%n2 != 0 and n2%n1 != 0 \
                            and n3%n4 != 0 and n4%n3 != 0 \
                            and r1 < self.xv and 1/r1 < self.xv\
                            and r2 < self.xv and 1/r2 < self.xv\
                            and dr < self.tr_tol:
                                new_train = Train(n1, n2, n3, n4, r1, r2, r3, dr)
                                lcm_exist = False
                                for train in trains:
                                    if new_train.r1 == train.r1 and new_train.r2 == train.r2:
                                        lcm_exist = True
                                if lcm_exist == False:
                                    trains.append(new_train)
        sc.STNoSolutions.text = str(len(trains))
        sc.btnFindTrains.visible = False
        sc.STSliderLabel.visible = False
        sc.SliderCombos.visible  = False
        return trains

    def PopulateTable(self):
        sc = self.components
        train_col_titles = ['N1    ', 'N2    ', 'N3    ', 'N4    ', 'R1', 'R2', 'R3', 'DR']
        sc.theList.columnHeadings = train_col_titles
        trainstrings = []
        for Train in trains:
            trainstring = [str('%.0f' % Train.n1), str('%.0f' % Train.n2),\
                           str('%.0f' % Train.n3), str('%.0f' % Train.n4),\
                           str('%.5f' % Train.r1), str('%.5f' % Train.r2),\
                           str('%.5f' % Train.r3), str('%.5f' % Train.dr)]
            trainstrings.append(trainstring)
        sc.theList.items = trainstrings[0:]

    '''On user inputs, update screen fields and parameters.'''

    def on_textfieldtr_textUpdate(self, event):
        self.UpdateFields()
    def on_textfieldtrtol_textUpdate(self, event):
        self.UpdateFields()
    def on_textfieldxvf_textUpdate(self, event):
        self.UpdateFields()
    def on_spinn1min_textUpdate(self, event):
        self.UpdateFields()
    def on_spinn1max_textUpdate(self, event):
        self.UpdateFields()
    def on_spinn2min_textUpdate(self, event):
        self.UpdateFields()
    def on_spinn2max_textUpdate(self, event):
        self.UpdateFields()
    def on_spinn3min_textUpdate(self, event):
        self.UpdateFields()
    def on_spinn3max_textUpdate(self, event):
        self.UpdateFields()
    def on_spinn4min_textUpdate(self, event):
        self.UpdateFields()
    def on_spinn4max_textUpdate(self, event):
        self.UpdateFields() 
      
    def on_btnFindTrains_mouseClick(self, event):
        self.UpdateFields()
        try:
            '''
            Test that all min. values in the spinners really are less than the max. values.
            If the conditions are not met an >error< is forced, and the "except" case is invoked.
            '''
            if self.n1_min >= self.n1_max or \
               self.n2_min >= self.n2_max or \
               self.n3_min >= self.n3_max or \
               self.n4_min >= self.n4_max:
                error = float(abc)
        except:
            dialog.alertDialog(self, 'Please enter valid values.', 'Input Value(s) Error')        
        self.get_trains()       
        self.PopulateTable()

    def on_cmdSaveAsText_command(self, event):
        global trains
        try:
            if self.components.btnFindTrains.visible == True:      
                error = float(abc)
        except:
            dialog.alertDialog(self, 'An input value has been modified.\
            \nPlease update values by pressing\
            \nUPDATE TOOTH COUNTS\
            \nbefore saving.', 'Update Tooth Counts.')        
            return        
        output_str = []
        output_str.append("\nTOOTH COUNTS FOR A TWO STAGE PTU ------------------------------------------\n")
        output_str.append("Design Criteria:\n")
        output_str.append('%.5f' % self.tr + '\t' + "tr" + '\t' + "Target ratio from customer")
        output_str.append('%.5f' % self.tr_tol + '\t' + "tr_tol" + '\t' + "Target ratio tolerance to meet")
        output_str.append(str(self.xvf) + '\t' + "xvf" + '\t' + "Extreme value factor" '\n')
        output_str.append(str(self.n1_min) + '\t' + str(self.n1_max) + '\t' + "min./max. tooth count range on gear 1")
        output_str.append(str(self.n2_min) + '\t' + str(self.n2_max) + '\t' + "min./max. tooth count range on gear 2")
        output_str.append(str(self.n3_min) + '\t' + str(self.n3_max) + '\t' + "min./max. tooth count range on gear 3")
        output_str.append(str(self.n4_min) + '\t' + str(self.n4_max) + '\t' + "min./max. tooth count range on gear 4\n")
        output_str.append(str(self.no_var) + '\t' + "No. of trains checked." '\n')
        output_str.append(str(len(trains)) + '\t' + "unique trains remaining. Suggested trains:" + '\n')
        columntitles = "TRAIN" + '\t' + \
                   "N1" + '\t' + "N2" + '\t' + "N3" + '\t' + "N4" + '\t' + \
                   "R1" + '\t' + "R2" + '\t' + "R3" + '\t' + "DR" + '\t' + '\n'
        output_str.append(str(columntitles))

        wildcard = "Text files (*.txt)|*.TXT;*.txt|All files (*.*)|*.*"
        result = dialog.saveFileDialog(wildcard=wildcard)
        if result.accepted:
            path = result.paths[0]
            
            new_file = open(path, 'w')
            for line in output_str:
                print >> new_file, line
            new_file.write("\n")
            item = 1
            for train in trains:
                print >> new_file, item, '\t', train
                item += 1
            new_file.write("\n")
            print >> new_file, "Generated by WISDOM TOOTH", datetime.datetime.now()
            new_file.close()

    def on_cmdSaveAsCSV_command(self, event):
        message = "\
        \nUse the SAVE AS TEXT option. The saved file \
        \n\nis TAB delimited and can be opened in \
        \n\nExcel directly by using FILE, OPEN, *.* \
        \n\nand then selecting your text file."
        dialog.messageDialog(self, message, 'CSV')

    def on_cmdWisdomTooth_command(self, event):
        message = "\
        \nWISDOM TOOTH was written in Python 2.7.2 \
        \n\nThe GUI was developed using PythonCard 0.8.2 and wxPython 2.8.12.1. \
        \n\n\nFor their assistance in the development of this program, I thank:\
        \n\n- Jason Bock for his technical support and graphic,\
        \n\n- Patrick Lutz for his suggestions and encouragement,\
        \n\n- Warren Sande and Carter Sande, authors of ""Hello World"", (Manning Publications)\
        \n\n for their programming advice.\
        \n\nMark Heinze, 2012-04-14"
        dialog.scrolledMessageDialog(self, message, 'About WISDOM TOOTH')

    def on_HelpFindingToothCounts_command(self, event):
        message = "\
        \nPROBLEM DEFINITION:\
        \n\n  For a two stage PTU,\
        \n\n  given the customer or target ratio (tr) and a tolerance band (tr_tol) for this ratio,\
        \n\n  find sets of gear tooth counts (n1, n2, n3, n4) with a resultant ratio (r3)\
        \n\n  such that a delta ratio (dr) ( dr = abs(tr-r3)) is within the set tolerance (tr_tol).\
        \n\n\nGEAR TRAIN DESIGN OF A TWO STAGE PTU:\
        \n\n  - gear1 with n1 teeth on shaft1 meshing with gear2\
        \n  - gear2 with n2 teeth on shaft2\
        \n  - gear3 with n3 teeth on shaft2 meshing with gear4\
        \n  - gear4 with n4 teeth on shaft3 (pinion)\
        \n\n  The resultant tooth ratios are then:\
        \n   r1 = (n1 / n2)\
        \n   r2 = (n3 / n4)\
        \n   r3 = (r1 * r2)      ; (overall ratio)\
        \n\n\nPROGAM CONSTRAINTS / REFINEMENTS / ASSUMPTIONS:\
        \n\n  tr_tol to be adjusted as required\
        \n\n  Tooth count range per gear where:\
        \n    n_min is the min. no. of teeth on a given gear\
        \n    n_max is the max. no. of teeth on a given gear\
        \n    then values must be:\
        \n    n_min < (n1, n2, n3, n4) < n_max\
        \n\n  To ensure more even wear of gears, even multiple tooth counts in ratios\
        \n  (ex. 9/3)to be prevented / not considered; that is:\
        \n    n1%n2 != 0 ; (modulus shall not be zero)\
        \n    n2%n1 != 0\
        \n    n3%n4 != 0\
        \n    n4%n3 != 0\
        \n\n  Exclude extreme values of r1 & r2:\
        \n    xv_invrs < r1 < xv  and  xv_invrs < r2 < xv\
        \n    where\
        \n    xvf                 : extreme value factor.\
        \n    xv = tr*xvf         : extreme value that bounds or limits the upper size of r1 and r2.\
        \n    xv_invrs = (1/xv)   : extreme value that bounds or limits the lower size of r1 and r2.\
        \n\n  Only tooth sets with the lowest common factors are presented.\
        \n    eg. For the (n1,n2,n3,n4) sets of 15,12,13,9 and 20,16,13,9 ,\
        \n    r1 is 1.25 (identical) in both sets.\
        \n    Only sets with the lowest common factors are reported (in this case, 15,12,13,9);\
        \n    the other set is simply a multiple."       
        dialog.scrolledMessageDialog(self, message, 'Finding Tooth Counts')
        
if __name__ == '__main__':
    app = model.Application(TrainFinder)
    app.MainLoop()
{'application':{'type':'Application',
          'name':'Template',
    'backgrounds': [
    {'type':'Background',
          'name':'PTU_GEAR_TRAIN_RATIOS_V2',
          'title':u'WISDOM TOOTH',
          'size':(800, 890),
          'foregroundColor':(0, 0, 0),
          'backgroundColor':(255, 255, 128),

        'menubar': {'type':'MenuBar',
         'menus': [
             {'type':'Menu',
             'name':'menuFile',
             'label':'&File',
             'items': [
                  {'type':'MenuItem',
                   'name':'menuSaveAsText',
                   'label':u'Save As Text',
                   'command':'cmdSaveAsText',
                  },
                  {'type':'MenuItem',
                   'name':'menuSaveAsCSV',
                   'label':u'Save As CSV',
                   'command':'cmdSaveAsCSV',
                  },
                  {'type':'MenuItem',
                   'name':'menuFileExit',
                   'label':'E&xit',
                   'command':'exit',
                  },
              ]
             },
             {'type':'Menu',
             'name':'menuHelp',
             'label':u'Help',
             'items': [
                  {'type':'MenuItem',
                   'name':'menuHelpFindingToothCounts',
                   'label':u'Finding Tooth Counts',
                   'command':'HelpFindingToothCounts',
                  },
              ]
             },
             {'type':'Menu',
             'name':'menuAbout',
             'label':u'About',
             'items': [
                  {'type':'MenuItem',
                   'name':'menuAboutWisdomTooth',
                   'label':u'Widsom Tooth',
                   'command':'cmdWisdomTooth',
                  },
              ]
             },
         ]
     },
         'strings': {
         },

         'components': [

{'type':'StaticText', 
    'name':'Acknowledgements1', 
    'position':(310, 775), 
    'text':u'WISDOM TOOTH: a PYTHON program by Mark Heinze.', 
    },

{'type':'StaticText', 
    'name':'Acknowledgements2', 
    'position':(310, 795), 
    'text':u'Technical support and graphic by Jason Bock. Inspiration and encouragement by Patrick Lutz.', 
    },

{'type':'StaticText', 
    'name':'Acknowledgements3', 
    'position':(310, 815), 
    'text':u'Programming advice by Warren and Carter Sande, authors of "Hello World", Manning Publ.', 
    },

{'type':'Image', 
    'name':'Image1', 
    'position':(10, 50), 
    'size':(280, 280), 
    'file':u'wisdom_tooth_thumbnail.JPG', 
    },

{'type':'StaticBox', 
    'name':'boxProgramName', 
    'position':(10, 5), 
    'size':(280, 40), 
    'backgroundColor':(255, 255, 128, 255), 
    'font':{'faceName': u'MS Shell Dlg 2', 'family': 'sansSerif', 'size': 22}, 
    'label':u'WISDOM TOOTH', 
    },

{'type':'Button', 
    'name':'btnFindTrains', 
    'position':(80, 730), 
    'size':(150, 40), 
    'backgroundColor':(255, 50, 50, 255), 
    'command':u'cmdFindTrains', 
    'default':True, 
    'font':{'faceName': u'MS Shell Dlg 2', 'family': 'sanSerif', 'size': 10}, 
    'label':u'Update Tooth Counts', 
    'toolTip':u'Calc. rate: ~ 8s/1M combinations', 
    },

{'type':'MultiColumnList', 
    'name':'theList', 
    'position':(312, 52), 
    'size':(450, 720), 
    'backgroundColor':(255, 255, 255, 255), 
    'columnHeadings':[u'train_col_titles'], 
    'font':{'faceName': u'Segoe UI', 'family': 'sansSerif', 'size': 9}, 
    'items':[], 
    'maxColumns':20, 
    'rules':1, 
    },

{'type':'StaticBox', 
    'name':'boxtitle', 
    'position':(310, 15), 
    'size':(450, 30), 
    'backgroundColor':(255, 255, 128, 255), 
    },

{'type':'StaticText', 
    'name':'programtitle', 
    'position':(400, 23), 
    'backgroundColor':(255, 255, 128, 255), 
    'font':{'faceName': u'MS Shell Dlg 2', 'family': 'sansSerif', 'size': 12}, 
    'text':u' Tooth Counts For A Two Stage PTU ', 
    },

{'type':'StaticBox', 
    'name':'boxtarget', 
    'position':(10, 550), 
    'size':(280, 280), 
    'backgroundColor':(255, 255, 128, 255), 
    'label':u'Target', 
    },

{'type':'StaticText', 
    'name':'labeltr', 
    'position':(70, 580), 
    'size':(110, -1), 
    'alignment':u'right', 
    'backgroundColor':(255, 255, 128, 255), 
    'text':u'Target Ratio', 
    },

{'type':'TextField', 
    'name':'textfieldtr', 
    'position':(200, 580), 
    'size':(55, -1), 
    'alignment':u'right', 
    'text':u'2.54321', 
    'toolTip':u'0.00001 <= float <= 9.99999', 
    },

{'type':'StaticText', 
    'name':'labeltrtol', 
    'position':(70, 610), 
    'size':(110, -1), 
    'alignment':u'right', 
    'backgroundColor':(255, 255, 128, 255), 
    'text':u'Ratio Tolerance', 
    },

{'type':'TextField', 
    'name':'textfieldtrtol', 
    'position':(200, 610), 
    'size':(55, -1), 
    'alignment':u'right', 
    'text':u'0.005', 
    'toolTip':u'float <= 0.01', 
    },

{'type':'StaticText', 
    'name':'labelxvf', 
    'position':(70, 640), 
    'alignment':u'right', 
    'backgroundColor':(255, 255, 128, 255), 
    'text':u'Extreme Value Factor*', 
    },

{'type':'TextField', 
    'name':'textfieldxvf', 
    'position':(200, 640), 
    'size':(55, -1), 
    'alignment':u'right', 
    'text':u'2', 
    'toolTip':u'1 <= float <= 2', 
    },

{'type':'StaticText', 
    'name':'STSliderLabel', 
    'position':(80, 775), 
    'backgroundColor':(255, 255, 128, 255), 
    'text':u'Count Update Progress Indicator', 
    },

{'type':'Slider', 
    'name':'SliderCombos', 
    'position':(65, 795), 
    'size':(180, 29), 
    'backgroundColor':(255, 255, 0, 255), 
    'labels':False, 
    'layout':'horizontal', 
    'max':100, 
    'min':0, 
    'tickFrequency':10, 
    'ticks':True, 
    'toolTip':u'Progress Bar', 
    'value':0, 
    },

{'type':'StaticBox', 
    'name':'boxranges', 
    'position':(10, 340), 
    'size':(280, 200), 
    'backgroundColor':(255, 255, 128, 255), 
    'label':u'Tooth Count Ranges (6 to 60)', 
    'toolTip':u'ranges 6 to 60', 
    },

{'type':'StaticText', 
    'name':'labelmintooth', 
    'position':(140, 360), 
    'backgroundColor':(255, 255, 128, 255), 
    'text':u'min', 
    },

{'type':'StaticText', 
    'name':'labelmaxtooth', 
    'position':(210, 360), 
    'backgroundColor':(255, 255, 128, 255), 
    'text':u'max', 
    },

{'type':'StaticText', 
    'name':'LabelGear1', 
    'position':(80, 380), 
    'backgroundColor':(255, 255, 128, 255), 
    'text':u'Gear1', 
    },

{'type':'StaticText', 
    'name':'LabelGear2', 
    'position':(80, 410), 
    'backgroundColor':(255, 255, 128, 255), 
    'text':u'Gear2', 
    },

{'type':'StaticText', 
    'name':'LabelGear3', 
    'position':(80, 440), 
    'backgroundColor':(255, 255, 128, 255), 
    'text':u'Gear3', 
    },

{'type':'StaticText', 
    'name':'LabelGear4', 
    'position':(80, 470), 
    'backgroundColor':(255, 255, 128, 255), 
    'text':u'Gear4', 
    },

{'type':'Spinner', 
    'name':'spinn1min', 
    'position':(130, 380), 
    'size':(50, -1), 
    'foregroundColor':(255, 255, 255, 255), 
    'max':60, 
    'min':6, 
    'toolTip':u'6 <=  integer <= max', 
    'value':6, 
    },

{'type':'Spinner', 
    'name':'spinn1max', 
    'position':(200, 380), 
    'size':(50, -1), 
    'foregroundColor':(255, 255, 255, 255), 
    'max':60, 
    'min':6, 
    'toolTip':u'min <=  integer <= 60', 
    'value':20, 
    },

{'type':'Spinner', 
    'name':'spinn2min', 
    'position':(130, 410), 
    'size':(50, -1), 
    'foregroundColor':(255, 255, 255, 255), 
    'max':60, 
    'min':6, 
    'toolTip':u'6 <=  integer <= max', 
    'value':6, 
    },

{'type':'Spinner', 
    'name':'spinn2max', 
    'position':(200, 410), 
    'size':(50, -1), 
    'foregroundColor':(255, 255, 255, 255), 
    'max':60, 
    'min':6, 
    'toolTip':u'min <=  integer <= 60', 
    'value':20, 
    },

{'type':'Spinner', 
    'name':'spinn3min', 
    'position':(130, 440), 
    'size':(50, -1), 
    'foregroundColor':(255, 255, 255, 255), 
    'max':60, 
    'min':6, 
    'toolTip':u'6 <=  integer <= max', 
    'value':6, 
    },

{'type':'Spinner', 
    'name':'spinn3max', 
    'position':(200, 440), 
    'size':(50, -1), 
    'foregroundColor':(255, 255, 255, 255), 
    'max':60, 
    'min':6, 
    'toolTip':u'min <=  integer <= 60', 
    'value':20, 
    },

{'type':'Spinner', 
    'name':'spinn4min', 
    'position':(130, 470), 
    'size':(50, -1), 
    'foregroundColor':(255, 255, 255, 255), 
    'max':60, 
    'min':6, 
    'toolTip':u'6 <=  integer <= max', 
    'value':6, 
    },

{'type':'Spinner', 
    'name':'spinn4max', 
    'position':(200, 470), 
    'size':(50, -1), 
    'max':60, 
    'min':6, 
    'toolTip':u'min <=  integer <= 60', 
    'value':20, 
    },

{'type':'StaticText', 
    'name':'LabelCombinations', 
    'position':(80, 500), 
    'backgroundColor':(255, 255, 128, 255), 
    'text':u'Combinations:', 
    },

{'type':'StaticText', 
    'name':'STNoCombinations', 
    'position':(160, 500), 
    'backgroundColor':(255, 255, 128, 255), 
    'text':u'No_Of_Combinations', 
    'userdata':u'bla\nbla\nbla', 
    },

{'type':'StaticText', 
    'name':'LabelSolutions', 
    'position':(80, 520), 
    'backgroundColor':(255, 255, 128, 255), 
    'text':u'Solutions:', 
    },

{'type':'StaticText', 
    'name':'STNoSolutions', 
    'position':(160, 520), 
    'backgroundColor':(255, 255, 128, 255), 
    'text':u'No_Of_Solutions', 
    'userdata':u'bla\nbla\nbla', 
    },

{'type':'StaticText', 
    'name':'STR1R2Range', 
    'position':(90, 674), 
    'backgroundColor':(255, 255, 128, 255), 
    'text':u'* ( limits R1 & R2 to between', 
    },

] # end components
} # end background
] # end backgrounds
} }

<<attachment: wisdom_tooth_thumbnail.JPG>>

Reply via email to