Как вернуть несколько значений из класса Python в вызывающий класс - PullRequest
0 голосов
/ 16 июня 2019

Параметры, возвращаемые вызываемым классом python, недоступны в вызывающем классе. Вызываемый класс получает значения из файла и возвращает их вызывающему классу.

Вызываемый класс (XPGWGetParms) создает словарь для возврата в вызывающий класс.

Class Main():
    def __init__(self, root, *args, *kwargs)
        self.root = root
        self.kwargs = {}

    def return_data(self):
        """

        :return:
        """
        self.kwargs = {
                    'text': self.text,
                    'codes': self.codes,
                    'darwin': self.darwin,
                    'windows': self.windows,
                    'linux': self.linux,
                    'raster_warning_level': self.raster_warning_level,
                    'padx': self.padx,
                    'pady': self.pady,
                    'win_background': self.win_background,
                    'screen_width': self.screen_width,
                    'screen_height': self.screen_height,
                    'char_width': self.char_width,
                    'progbar_maximum': self.progbar_maximum,
                    'window_app_name': self.window_app_name,
                    'default_font': self.default_font,
                    'next_step': self.next_step
                    }

        return self.kwargs

вызывающий класс

class Main(tk.Frame)
    def __init__(self, root, *args, **kwargs)
        tk.Frame.__init__(self, root, *args, **kwargs)        
        self.kwargs = {}
        self.text = {}
        self.codes = {}

        # Get text strings and parms
        self.kwargs = XPGWGetParms.Main(self, root, *args, **kwargs)

        self.text = self.kwargs['text']
        self.codes = self.kwargs['codes']

Я ожидал, что self.text в вызывающем классе будет заполнен значением, назначенным клавише 'text', т.е. self.text. Вместо этого я получаю вложенное значение kwargs, согласно отладчику, т. Е.

 self={Main}.!main
     kwargs=Main<XPGWGetParms.Main...
         kwargs={dict}<class'dict>...
             'text'={dict}<class'dict>...
                 'APPNAME'={str}'Application Name'

Я не знаю, что я делаю неправильно, возможно, это довольно просто, но я не могу разобраться.

1 Ответ

0 голосов
/ 17 июня 2019

Так что я никуда не попал с маршрутом getitem , поэтому я провел дополнительное исследование, и это работает для меня

self.instance_of_XPGWGetParms = XPGWGetParms.Main(self, root, *args, **kwargs)
self.kwargs = self.instance_of_XPGWGetParms.return_data()

Я тоже не совсем понимаю, но яЯ работаю над этим.

Большое спасибо

...