Пользование внешними библиотеками GUI для создания пользовательских интерфейсов на языке майя Autodesk

Если вы хотите легко вызвать этот SOAP WS с PHP, я настоятельно рекомендую вам использовать генератор WSDL to PHP, так как это упростит построение запроса и обработку запросов с использованием подхода ООП, который всегда лучше. [111 ]

Кроме того, использование хорошей IDE, адаптированной к PHP, такой как PhpStorm или Eclise PDT, является минимальным требованием для легкого использования сгенерированного PHP SDK благодаря автозаполнению.

Я бы посоветовал вам попробовать проект PackageGenerator , который довольно завершен и использует композитор.

7
задан Soviut 29 December 2008 в 08:41
поделиться

2 ответа

Я не уверен, релевантно ли это, но некоторый поиск с помощью Google поднимается, тот PyQt довольно популярен в языке майя. Вы могли попробовать технику здесь или здесь (объясненный здесь с исходным кодом) создания нового threadloop через язык майя и выполнение в этом. Это кажется майя, включали модуль, который настраивает объект нового потока с QApplication в нем:

def initializePumpThread():
    global pumpedThread
    global app
    if pumpedThread == None:
        app = QtGui.QApplication(sys.argv)
        pumpedThread = threading.Thread(target = pumpQt, args = ())
        pumpedThread.start()

и затем настраивает функцию для обработки событий Qt:

def pumpQt():
    global app
    def processor():
        app.processEvents()
    while 1:
        time.sleep(0.01)
        utils.executeDeferred( processor )

Можно, вероятно, сделать что-то похожее с wxPython также. (utils.executeDeferred функция майя.) Убедиться проверить, как создать не блокирующийся GUI на wxPython wiki. Вместо processEvents (), Вы захотите настроить цикл событий и проверку на события "Pending" в (надо надеяться, переименованный?) pumpQt функционируют выше. (wxPython источник имеет реализацию Python MainLoop.), Вероятно, это должно быть сделано через приложение. Урожай () функция, но я не уверен.

def pumpWx():
    global app
    def processor():
        app.Yield(True)
    while 1:
        time.sleep(0.01)
        utils.executeDeferred( processor )

def initializePumpThread():
    global pumpedThread
    global app
    if pumpedThread == None:
        app = wx.App(False)
        pumpedThread = threading.Thread(target = pumpWx, args = ())
        pumpedThread.start()

wxPython документы указывают, что SafeYield () предпочтен. Снова, это кажется, что мог быть первый шаг, но я не уверен, что это будет работать и не просто отказывать ужасно. (Существует некоторая дискуссия о том, что Вы хотите сделать в wxPython списке рассылки, но это от нескольких вспомогательных версий несколько wx назад.) Существует также некоторый признак на различных форумах, что эта техника вызывает проблемы с вводом с клавиатуры. Вы могли бы также попытаться делать:

def processor():
  while app.Pending(): app.Dispatch()

иметь дело с текущим списком событий.

Удачи!

2
ответ дан 7 December 2019 в 18:46
поделиться

Я не знаю, существует ли путь вокруг mainloop для gui, так как необходимо обработать все цепочки события и очереди перерисовки.

Но существует несколько средств межпроцессного взаимодействия, как каналы или семафоры. Возможно, это - опция разделить Ваше расширение майя на фактический плагин, будучи трудным на язык майя и отдельное приложение для gui. Эти два могли использовать такие средства передать и обмениваться информацией модели между плагином и gui. Я не уверен, однако, если я могу действительно рекомендовать этот подход, потому что он очень усложняет приложение.

Вы могли взглянуть на IPython, интерактивную оболочку Python, команда разработчиков которой приложила некоторые усилия к интеграции его с wxPython. У них есть некоторый способ прервать цикл событий и сцепиться в него, чтобы сделать их собственный материал.

0
ответ дан 7 December 2019 в 18:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: