Использование значения переменной внутри Tkinter - AttributeError: у объекта 'unicode' нет атрибута 'tk' - PullRequest
0 голосов
/ 17 марта 2020

Возникла небольшая проблема с Tkinter.

Я хочу использовать файл JSON в качестве «конфигурации» для назначения фрейма виджета.

Мой анализатор JSON:

 with open('data.txt') as json_file:
 data = json.load(json_file)
 for p in data['config']:
 clockFrame = (p['clockFrame'])
 clockSide = (p['clockSide'])

и при запуске тестов с использованием print clockFrame он выдает значение, которое я хочу "self.topFrame"

Эта строка кода работает должным образом:

self.clock = clock.Clock(self.topFrame)

Однако, когда я хочу использовать переменную, такую ​​как:

self.clock = clock.Clock(clockFrame)

В конечном итоге я получаю сообщение об ошибке:

AttributeError: 'unicode' object has no attribute 'tk'

Кто-нибудь знает, как лучше всего вызывать переменную, чтобы я использовал значение?

Спасибо заранее.

1 Ответ

1 голос
/ 17 марта 2020

Вы хотите настроить, какой виджет получает часы. Поскольку вы храните строку, вам нужен какой-то способ сопоставления этой строки с объектом кадра. У вас правильная идея, вы хотите self.topFrame в этом случае. Поскольку данные-члены объекта уже являются именованной базой данных, вы можете просто изменить конфигурацию на имя переменной, содержащей нужный объект.

with open('data.txt') as json_file:
    data = json.load(json_file)
    # this loops through a list of configs and keeps the last
    # one, which is odd..
    for p in data['config']:
        clockFrame = (p['clockFrame'])
        clockSide = (p['clockSide'])

     # in this example, clockFrame = "topFrame"

# get clock frame from current object data
self.clock = clock.Clock(getattr(self, clockFrame))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...