Ошибка отступа в def commonMenu

Я новичок в Python, но знаком с MEL. На данный момент я пытаюсь создать меню для моего проекта специализации (инструмент быстрого риггинга). Я получаю эту ошибку каждый раз, пока не могу найти ей логического объяснения. Ошибка - неожиданный отступ, он появляется в дефе для создания меню.

Я действительно пытаюсь получить эту вещь на земле, спасибо заранее :)

Код:

#Python script: Autorig v0.0.1
#Interface

import maya.cmds as cmds

#Create main window
#
class AR_OptionWindow(object):
    def __init__(self):
        self.window = 'ar_optionsWindow'
        self.title = 'Options Window'
        self.size = (546, 350)
        self.supportsToolAction = False
    def commonMenu(self):
        self.editMenu = cmds.menu(label = 'Edit')
        self.editMenuSave = cmds.menuItem(
            label='Save Settings'
        )
        self.editMenuReset = cmds.menuItem(
            label='Reset Settings'
        )
        self.editMenuDiv = cmds.menuItem(d=True)
        self.editMenuRadio = cmds.radioMenuItemCollection()
        self.editMenuAction = cmds.menuItem(
            label='As Action',
            radioButton=True,
            enable=self.supportsToolAction
        )
        self.editMenuTool = cmds.menuItem(
            label='As Tool',
            radioButton=True,
            enable=self.supportsToolAction
        )
        self.helpMenu = cmds.menuItem(label='Help')
        self.helpMenuItem = cmds.menuItem(
            label='Help in %s'%self.title
        )
    def create(self):
        if cmds.window(self.window, exists=True):
            cmds.deleteUI(self.window, window=True)
        self.window = cmds.window(
            self.window,
            title=self.title,
            widthHeight=self.size
        )
        cmds.showWindow()

Я получаю следующую ошибку:

# Error: unexpected indent 
# File "<maya console>", line 30 
# self.editMenuTool = cmds.menuItem( 
# ^ 
# IndentationError: unexpected indent 
#

person Aardschok    schedule 18.03.2014    source источник
comment
Работает на моей машине. Какое точное сообщение об ошибке и трассировка стека?   -  person Kevin    schedule 18.03.2014
comment
Я получаю следующую ошибку: # Ошибка: неожиданный отступ # Файл ‹maya console›, строка 30 # self.editMenuTool = cmds.menuItem( # ^ # IndentationError: неожиданный отступ #   -  person Aardschok    schedule 18.03.2014


Ответы (1)


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

Во-первых, табуляция заменяется (слева направо) от одного до восьми пробелов, так что общее количество символов до замены включительно кратно восьми (предполагается, что это то же правило, что и в Unix). Общее количество пробелов, предшествующих первому непустому символу, определяет отступ строки. Отступ нельзя разделить на несколько физических строк с помощью обратной косой черты; пробел до первой обратной косой черты определяет отступ.

введите здесь описание изображения

На этом изображении вкладки — это стрелки, а пробелы — точки. Ваша строка self.editMenuAction = фактически имеет 12 пробелов отступа. Ваша строка self.editMenuTool = фактически имеет 16.

Согласно PEP 8, вы должны использовать исключительно пробелы для отступов.

person Kevin    schedule 18.03.2014
comment
Спасибо за быстрый ответ, это имеет больше смысла, и теперь это работает :) - person Aardschok; 18.03.2014