Перебор переменных для изменения его функций в Python - PullRequest
0 голосов
/ 29 июля 2010

Я присвоил значения с помощью функции setattr () в цикле:

for i in range(30):
        for j in range(6):  
            setattr(self, "e"+str(i)+str(j), Entry(self.top))

, тогда я хочу применить .grid () func. ко всем этим переменным с помощью цикла.

Например,

self.e00.grid(row= 0, column= 0)

Как я могу это сделать?

Ответы [ 3 ]

6 голосов
/ 29 июля 2010

Это не верный путь к вещам. Создайте один атрибут и поместите в него все данные.

import numpy as np
self.matrix = np.array( ( 6, 30 ), Entry( self.top ) )

for row in self.matrix:
    for elt in row:
        elt.grid( ... )
3 голосов
/ 29 июля 2010

Использование getattr():

getattr(self, "e00").grid(row=0, column=0)

или соответственно в цикле:

getattr(self, "e"+str(i)+str(j)).grid(row=0, column=0)

Хотя может быть лучшее решение, в зависимости от того, что на самом деле делает ваш код.

1 голос
/ 29 июля 2010

Возможно, вместо списка используйте список списков для вашей матрицы:

self.ematrix = [ [ Entry(self.top) for j in range(6)]  # columns
                                   for i in range(30)] # rows

for i,row in enumerate(self.ematrix):
    for j,elt in enumerate(row):
        elt.grid(row=i,column=j)
...