0008 实现MaxMaya共用一套GUI

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自带的:

0008 实现MaxMaya共用一套GUI

0008 实现MaxMaya共用一套GUI

 

设计一个工具界面,存为guiDemo.ui文件

0008 实现MaxMaya共用一套GUI

 

写个脚本将ui文件批量转为xxx_ui.py(也可以直接加载ui文件)

0008 实现MaxMaya共用一套GUI

0008 实现MaxMaya共用一套GUI

 

生成好的python文件

0008 实现MaxMaya共用一套GUI

 

实现自己的窗口类,我通常继承多个父类,然后写一个main直接运行测试(这时不需要到Maya或Max里面去测试):

0008 实现MaxMaya共用一套GUI

 

写一个python文件用于获取父窗口

0008 实现MaxMaya共用一套GUI

 

写个launcher.py用于测试

0008 实现MaxMaya共用一套GUI

 

Maya2017里运行效果

0008 实现MaxMaya共用一套GUI

 

Max2019里运行效果

0008 实现MaxMaya共用一套GUI

 

Houdini14里运行效果

0008 实现MaxMaya共用一套GUI

Ooops! 直接挂掉了!

仔细一看,不是PySide2, 而是PySide!

 

如果在更低的Maya版本下,也会报同样的错! 比如Maya2014, 因为PySide2还是比较新的东西, 低版本用的PySide甚至PyQt4。怎么办?

 

有个开源的项目叫Qt.py,支持PyQt4, PyQt5, PySide, PySide2,用它就能完美解决跨版本了:

0008 实现MaxMaya共用一套GUI

 

基本上就是加上一行: os.environ['QT_PREFERRED_BINDING'] = 'PySide'

然后from Qt import xxx, 就差不多了;

 

这里不测试了,之前的经验是在2014下PySide开发,然后需要支持高版本2017的PySide2,就靠它解决了。

 

好了,现在你已经知道如何跨版本、跨不同软件共享同一套GUI了;对开发者的好处是不用搞那么多套,省事;对最终用户的好处是学习成本大大降低了。

 

Git:

git clone https://github.com/WendyAndAndy/MayaDev.git