#python #oop #tkinter
#python #ооп #tkinter
Вопрос:
Я создал динамические переменные в своем проекте tkinter, но я не могу получить к нему доступ, как я могу это сделать?
dict_ndfitemcostcategory = {}
for ndicc in range(2, 133):
# self.neighborhood_details_item_cost_category_entry_2 - starting point
dict_ndfitemcostcategory["self.neighborhood_details_item_cost_category_entry" "_" str(ndicc)] = tk.Text(self.frame, height=2, width=25, bg='alice blue', wrap=tk.WORD)
dict_ndfitemcostcategory["self.neighborhood_details_item_cost_category_entry" "_" str(ndicc)].grid(row=ndicc, column=3, padx=5, pady = 4)
Я попытался запустить:
self.neighborhood_details_item_cost_category_entry_2.insert(tk.END, "asd")
Но, похоже, его невозможно найти:
AttributeError: 'Neighborhood_Details' object has no attribute 'dict_ndn'
Ответ №1:
Вы не определяете динамические переменные; вы определяете только обычные dict
, которые выходят за пределы области видимости при возврате функции. Сам словарь должен быть атрибутом экземпляра с желаемыми «динамическими» атрибутами в качестве ключей.
self.dict_ndfitemcostcategory = {}
for ndicc in range(2, 133):
key = "neighborhood_details_item_cost_category_entry" "_" str(ndicc)
self.dict_ndfitemcostcategory[key] = tk.Text(self.frame, height=2, width=25, bg='alice blue', wrap=tk.WORD)
self.dict_ndfitemcostcategory[key].grid(row=ndicc, column=3, padx=5, pady = 4)
Затем
self.dict_ndfitemcostcategory["neighborhood_details_item_cost_category_entry_2"].insert(tk.END, "asd")
Комментарии:
1. Большое вам спасибо за объяснение и решение! 🙂