Ошибка типа Tkinter при настройке виджетов - PullRequest
0 голосов
/ 23 января 2020

Когда я вхожу с тестовыми учетными данными testuser: test, главное окно обновляется только частично и возвращает этот стек ошибок

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Program Files\Python36-32\lib\tkinter\__init__.py", line 1699, in __call__
    return self.func(*args)
  File "N:\Subjects\Computer Science\Programming\gui manager (1).py", line 539, in get_info
    update_window(username)
  File "N:\Subjects\Computer Science\Programming\gui manager (1).py", line 560, in update_window
    main_window.config_widget("actions button",text="User actions",command=actions,fg="green")
  File "N:\Subjects\Computer Science\Programming\gui manager (1).py", line 429, in config_widget
    elif widget[0] == self.name: # If the widget has a name and it is the same as the passed 
parameter, configs widget
  File "C:\Program Files\Python36-32\lib\tkinter\__init__.py", line 1483, in cget
    return self.tk.call(self._w, 'cget', '-' + key)
TypeError: must be str, not int

«соответствующий» (относящийся к обратному вызову) раздел: * подсказка: находится в класс Root, показанный ранее, er go Я использую self и запускаю его как метод класса

def config_widget(self,name,**kwargs):
    self.name = name
    self.kwargs = kwargs

    for widget_list in [self.button_list,self.entry_list,self.label_list,self.frame_dict.keys()]: # Iterates over list, of lists of types of widgets
        for widget in widget_list:  # Iterates over indiviual widget type list
            if widget == self.name:
                widget = self.frame_dict[self.name]
                for arg in self.kwargs:
                    self.value = kwargs[arg]
                    widget[arg] = self.value
            elif widget[0] == self.name: # If the widget has a name and it is the same as the passed parameter, configs widget
                for arg in self.kwargs:
                    self.value = kwargs[arg]
                    widget[1][arg] = self.value

полный код: https://1drv.ms/t/s! Ak6qBja0XlA7gV2zWKbCQ0J8Cdcl? e = PWPCUG

1 Ответ

0 голосов
/ 23 января 2020

Решение состоит в том, чтобы заключить конфигурацию l oop в попытку: кроме TypeError: затем передать, если перехват TypeError обнаружен. Ошибка TypeError возникает, когда программа пытается проиндексировать виджет, который ломает l oop и не позволяет ему конфигурировать остальные виджеты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...