Я думаю, что есть логическая ошибка. Вот в чем дело
ActiveExerciseSet = None # this is a global variable
class AddWorkoutWidget(Screen):
exercise_set = ObjectProperty("0")
def AddExercise(self):
ActiveExerciseSet = self.exercise_set.text #this creates a local variable within this function
, поэтому, когда вы запускаете эту функцию, глобальная переменная по-прежнему None
, где вы думали, что ей присвоено значение
class AddSetWidget(GridLayout,Screen):
def __init__(self, **kwargs):
super(AddSetWidget, self).__init__(**kwargs) # call grid layout parameters
self.cols = int(ActiveExerciseSet)
#this is looking for a local variable
#and not the global variable
for I in self.col:
pass
Следовательно, вы получаете ошибку что это NoneType
- что правильно, поскольку вашей глобальной переменной присвоено значение None
Решение Чтобы использовать / назначить значение для global variable
, вы нужно использовать ключевое слово global
def AddExercise(self):
global ActiveExerciseSet#reference to global variable
ActiveExerciseSet = self.exercise_set.text
class AddSetWidget(GridLayout,Screen):
def __init__(self, **kwargs):
super(AddSetWidget, self).__init__(**kwargs) # call grid layout parameters
global ActiveExerciseSet #reference to global variable
self.cols = int(ActiveExerciseSet)
for I in self.col:
pass