Python — изменить текстовое поле после просмотра — MAYA

У меня самая неприятная проблема с экспортером GUI в Maya. Я заставил textField и т. д. работать, но я не могу изменить значение textField после его создания, что мне и нужно сделать.

То, что я хочу сделать, например, скажем, что путь к файлу с самого начала отсутствует. Теперь текстовое поле распечатало: «Нет», но после того, как вы нажмете «Обзор» и выберите каталог, я хочу, чтобы он изменил «Нет» на путь к каталогу и т. Д.

Это единственная проблема, которая у меня сейчас есть, и полученный код ошибки:

Ошибка: RuntimeError: файл C:\Program Files\Autodesk\Maya2015\Python\lib\site-packages\pymel\internal\pmcmds.py строка 134: Слишком много дочерних элементов в макете: rowLayout3 #

Код:

#Setup the window using the returned window

def setupWindow(self, new_window):
    try:
        frame_layout = pm.frameLayout(labelVisible = False, marginWidth = 5, marginHeight = 5)
        pm.columnLayout(w = 350, h = 300)            

        pm.text(label = "Filepath: ")

        self.textField = pm.textField("FieldNorm", text = "%s" % self.filePath, editable = False, w = 350, h = 20)            

        pm.button(label = "Browse", w = 100, h = 20, command = self.browse)
        pm.rowLayout(numberOfColumns = 2, adjustableColumn = 1, w = 350, h = 25)
        pm.button(label = "Export", w = 200, h = 25, command = self.export)
        pm.button(label = "Close", w = 100, h = 25, command = pm.Callback(self.closeButton, new_window))
    except:
        print "<Setting up window failed>"

#Show the returned window        
def showWindow(self, new_window):
    if new_window is not None:
        pm.showWindow(new_window)
    else:
        print "<Window does not exist!>"

#Browse Directory and Paste into textField        
def browse(self, filePath):
    self.filePath = pm.fileDialog2(dialogStyle = 2, returnFilter = 1, fileFilter = "*.obj")

    if self.filePath is not None:
        self.textField = pm.textField("FieldNorm", text = "%s" % self.filePath, editable = False, w = 350, h = 20)
    else:
        print "<No changes has been made!>"

person Community    schedule 31.05.2014    source источник


Ответы (2)


Похоже, вам нужен флаг редактирования в строке pm.textField вBrowse()

pm.textField("FieldNorm", edit=True, text = "%s" % self.filePath)
person Julian Mann    schedule 01.06.2014

Ошибка означает, что вы добавляете новый элемент управления, возможно, в макет строки в конце функции setupWindow, которая содержит две кнопки — Maya думает, что вы добавляете третью.

Если вы хотите обновить содержимое self.textfield в функциях просмотра, вам нужно

   pm.textField(self.textField, e=True, text = "%s" % self.filePath, editable = False, w = 350, h = 20)

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

    self.textField = pm.textField("FieldNorm", text = "%s" % self.filePath, editable = False, w = 350, h = 20)

пытается создать новый, как указывает @julianMann

person theodox    schedule 03.06.2014