Майя номер телефона запрос - PullRequest
0 голосов
/ 26 мая 2018

Я работаю над сценарием, которому нужен номер телефона, запрашиваемый из поля tex или поля int для maya.Я использую Python, и я не могу найти ничего, что работает.Вы можете помочь?Спасибо Тед Хорошо. Это тот беспорядок, который я придумал.

def makeTui():
    if(cmds.window('window2',q=1,ex=1)):cmds.deleteUI('window2')
    cmds.window('window2',menuBar=1)
    cmds.formLayout('formLayout1')
    cmds.text(label='Phone Number')
    num = cmds.intField('textField4',width=100,height=20,changeCommand = num_callback)
    cmds.text('text95',label='Service Provider')
    cmds.optionMenu('optionMenu1')
    cmds.menuItem(label='AT&T')
    cmds.menuItem(label='Verizon')
    cmds.menuItem(label='Sprint')
    cmds.menuItem(label='Cricket')
    cmds.menuItem(label='Tmobil')
    cmds.iconTextButton('iconTextButton45',parent='formLayout1',image='render.png',command='num_callback()')
    cmds.formLayout('formLayout1',e=1,attachForm=[['textField4', 'left', 100], ['text95', 'top', 30], ['optionMenu1', 'top', 30], ['optionMenu1', 'left', 100], ['iconTextButton45', 'left', 100], ['iconTextButton45', 'top', 60]])
    cmds.showWindow('window2')
makeTui()

def num_callback():
    print cmds.intField(num, q=True, value=True)

1 Ответ

0 голосов
/ 27 мая 2018

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

def create_ui():

    window = cmds.window()
    column  = cmds.columnLayout(adj=True)

    # three items arranged horizontally
    row = cmds.rowLayout(nc = 3)
    numfield = cmds.textFieldGrp(label = 'phone number')
    cmds.text("provider")
    provider = cmds.optionMenu()
    for p in ('AT&T', 'Verizon', 'Sprint', 'T-Mobile'):
        cmds.menuItem(label = p)
    cmds.setParent("..")

    # define this function here so it knows the widgets for 
    # the text field and the option menu
    def render_button():
        phoneno = cmds.textFieldGrp(numfield, q=True, text=True)
        # remove any punctuation:
        digits =[int(c) for c in phoneno if c.isdigit()]
        providername  = cmds.optionMenu(provider, q=True, v=True)
        print digits, providername


    cmds.iconTextButton(image='render.png', c = render_button)
    cmds.showWindow(window)

Здесь функция обратного вызова знает «имена» поля для ввода номеров и опциональное меню для выбора провайдеров.Фактическая работа перейдет в функцию render_buttons().Между прочим, я использовал текстовое поле, так как многие люди ожидают напечатать такие вещи, как 1 (555) 111-2222 и intField не позволят.

...