UmSenhorQualquer/pyforms

Pyforms and PyInsaller error

Closed this issue · 1 comments

SimoB commented

HI, I'm trying to make an executable with PyInstaller, the test app works just fine when executed directly with python but instead, the compiled exe give me this error

C:\Users\Simone\Sviluppo\Tutorials\python\pyforms_test\dist>example.exe
Traceback (most recent call last):
File "example.py", line 1, in
File "", line 971, in _find_and_load
File "", line 955, in _find_and_load_unlocked
File "", line 665, in load_unlocked
File "c:\users\simone.virtualenvs\pyforms_test-b9tyrkwk\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
exec(bytecode, module.dict)
File "site-packages\pyforms_init
.py", line 6, in
File "site-packages\pyforms\utils\settings_manager.py", line 22, in add
File "site-packages\pyforms\utils\settings_manager.py", line 16, in __load_module
AttributeError: module 'pyforms' has no attribute 'settings'
[12552] Failed to execute script example

that's my very basic test app code

import pyforms
from pyforms import BaseWidget
from pyforms.controls import ControlText
from pyforms.controls import ControlButton
from pyforms.controls import ControlFile


class Example(BaseWidget):

    def __init__(self):
        BaseWidget.__init__(self, 'Example')

        # fields
        self._uno = ControlText('Uno', '1')
        self._due = ControlText('Due', '2')
        self._tre = ControlText('Tre', '3')
        self._full = ControlText('Full')
        self._button = ControlButton('Press me!')
        self._file = ControlFile('File')

        # layout
        self.formset = [
            {
                'Tab1': ['_uno', '||', '_due', '||', '_tre'],
                'Tab2': ['_full'],
                'Tab3': ['_file']
            },
            '=',
            (' ', '_button', ' ')
        ]

        # menu
        self.mainmenu = [
            {
                'File': [
                    {'Open': self.__openEvent},
                    '-',
                    {'Save': self.__saveEvent},
                    {'Save as': self.__saveAsEvent}
                ]
            },
            {
                'Edit': [
                    {'Copy': self.__editEvent},
                    {'Past': self.__pastEvent}
                ]
            }
        ]

        # pops
        path = self._full.add_popup_submenu('Path')
        self._full.add_popup_menu_option('Dummy1', self.__dummyEvent1, submenu=path)
        self._full.add_popup_menu_option('Dummy2', self.__dummyEvent2, submenu=path)

        # actions
        self._button.value = self.__buttonAction

        # events
        self._file.changed_event = self.__fileAction

    def __buttonAction(self):
        self._full.value = '{} {} {}'.format(self._uno.value, self._due.value, self._tre.value)

    def __fileAction(self):
        self._full.value = self._file.value

    def __openEvent(self):
        pass

    def __saveEvent(self):
        pass

    def __saveAsEvent(self):
        pass

    def __editEvent(self):
        pass

    def __pastEvent(self):
        pass

    def __dummyEvent1(self):
        self._full.value = 'UNO'

    def __dummyEvent2(self):
        self._full.value = 'DOS'


if __name__ == '__main__':
    pyforms.start_app(Example, geometry=(500, 500, 300, 100))