我在 Autodesk Maya 中开发工具。我构建的许多工具都有简单的窗口 GUI,供动画师和建模师使用。这些 GUI 通常包含任何基本窗口中所期望看到的内容;标签、列表、菜单、按钮、文本字段等。然而,使用可用工具构建 UI 的复杂性存在限制,特别是在可用小部件类型方面。
我有兴趣使用一些更高级的 wxPython 小部件,例如 ListView(网格)、Tree 等。这将涉及使用完整的 wxFrame(窗口)来显示整个 UI,这实际上意味着该窗口将不再与 Maya 绑定。这并不是致命问题,但这意味着当 Maya 最小化时,窗口不会跟随最小化。
我之前尝试过使用 tkinter 进行测试,但发现它需要在自己的线程中运行 MainLoop。这是合理的,但在我的情况下,它与 Maya 自己的线程冲突,从本质上让 Maya 挂起,直到关闭窗口为止。这是由于 Maya 在单个线程中运行所有脚本,无论是 MEL 还是 Python,主 Maya GUI 共享该线程。这是为了防止一个脚本删除对象,而另一个脚本正在尝试在同一对象上执行操作。
wxPython 也采用了这种“mainloop”方法。我想知道是否有任何方法可以避免这种情况,以便它可以在 Maya 中运行?
我有兴趣使用一些更高级的 wxPython 小部件,例如 ListView(网格)、Tree 等。这将涉及使用完整的 wxFrame(窗口)来显示整个 UI,这实际上意味着该窗口将不再与 Maya 绑定。这并不是致命问题,但这意味着当 Maya 最小化时,窗口不会跟随最小化。
我之前尝试过使用 tkinter 进行测试,但发现它需要在自己的线程中运行 MainLoop。这是合理的,但在我的情况下,它与 Maya 自己的线程冲突,从本质上让 Maya 挂起,直到关闭窗口为止。这是由于 Maya 在单个线程中运行所有脚本,无论是 MEL 还是 Python,主 Maya GUI 共享该线程。这是为了防止一个脚本删除对象,而另一个脚本正在尝试在同一对象上执行操作。
wxPython 也采用了这种“mainloop”方法。我想知道是否有任何方法可以避免这种情况,以便它可以在 Maya 中运行?