0008 实现MaxMaya共用一套GUI
游戏与影视行业制作软件多标配Python脚本,Qt开发GUI。比如Max新版本, Maya, Houdini, Nuke, Blender等,理论上在这些软件下开发工具时,只需要设计一套UI, 就可以跨App使用了。
看一下要如何做? 这里在Maya2017与Max2019下演示(因为都是PySide2)。
基本流程:
1. 使用Qt Designer快速设计UI
2. 将ui文件转成python,继承它,实现自己的窗口类
在Qt Designer中设计UI,我使用Maya自带的:
设计一个工具界面,存为guiDemo.ui文件
写个脚本将ui文件批量转为xxx_ui.py(也可以直接加载ui文件)
生成好的python文件
实现自己的窗口类,我通常继承多个父类,然后写一个main直接运行测试(这时不需要到Maya或Max里面去测试):
写一个python文件用于获取父窗口
写个launcher.py用于测试
Maya2017里运行效果
Max2019里运行效果
Houdini14里运行效果
Ooops! 直接挂掉了!
仔细一看,不是PySide2, 而是PySide!
如果在更低的Maya版本下,也会报同样的错! 比如Maya2014, 因为PySide2还是比较新的东西, 低版本用的PySide甚至PyQt4。怎么办?
有个开源的项目叫Qt.py,支持PyQt4, PyQt5, PySide, PySide2,用它就能完美解决跨版本了:
基本上就是加上一行: os.environ['QT_PREFERRED_BINDING'] = 'PySide'
然后from Qt import xxx, 就差不多了;
这里不测试了,之前的经验是在2014下PySide开发,然后需要支持高版本2017的PySide2,就靠它解决了。
好了,现在你已经知道如何跨版本、跨不同软件共享同一套GUI了;对开发者的好处是不用搞那么多套,省事;对最终用户的好处是学习成本大大降低了。
Git:
git clone https://github.com/WendyAndAndy/MayaDev.git