# coding:utf-8 今天笔者给大家带来的是如何在Maya中创建我们的窗口工具化并置顶且唯一。 由于笔者的Maya是2017的版本UI部分Maya已经更新至PySide2所以在开始的地方有做兼容操作,如果不明白Class1这个类的读者可以阅读上一篇的推文《【PyQt系列一】新手向导QT教程》 这次我们一步一步来分析MayaClass这个类,至于为什么要区分成2个类,为了可以分开在IDE中调试UI,Maya中调试功能,笔者把习惯于import maya.cmds as cmds这个部分放在了MayaClass这个类里面目的就是为了可以在外部的IDE中正常的运行。 我们先看以下代码: window_flags = self.windowFlags()window_flags |= Qt.Toolwindow_flags |= Qt.WindowStaysOnTopHintself.setWindowFlags(window_flags) 第一行是先获取目前窗体的一些标志,这样做的原因是在有些时候我们会用各种各样的方法在Class1的时候就先设定掉一些标志,这样可以先获取到之前的标志。 第二行是在基础上追加工具化,工具化的作用是当运行的时候Windows任务栏不会多出一个额外的任务图标。 第三行是在基础上追加置顶。 那么最后一行当然就是设定我们刚刚追加完的一些标志 接着我们看下如何实现每次都只能打开一个该窗口 global XXX 第一行,我们建立一个全局变量(根据PEP8的规范,所有的全局变量,变量名需要全大写各位读者留意下书写规范问题) 第二行,我们判断这个全局变量是否存在并且是否和当前相同 第三行,如果符合这个条件,那么我们将关闭之前的窗体 接着就是main这个函数 第二行,我们在这个地方引入了我们之前定义的全局变量 第三行,我们把自己赋予给了全局变量 到这里我们已经完完全全实现了Maya中PySide的窗口工具化并置顶且唯一 那么我们接着看以下的代码 看看在Maya中我们该如何显示我们的窗体,将前面的代码保存成E:/My_Work/andy/class1.py,然后在Maya的Python中执行下面的代码
好了现在我们可以点击测试按钮可以看到Scrpit Editor中显示了Hello QT。 ![]() 在Maya中笔者有个习惯喜欢把实例化对象赋予一个变量,一来是为了代码整洁,二来是为了以后可以实现一些其他功能。 其实我们在MayaClass写的东西很少,往往是以实现Maya内部功能较多,而UI的部分笔者还是习惯于写在MayaClass的父类中,笔者更喜欢在IDE中调试UI部分,这样可以在MayaClass简单的情况下我们依旧继承了所有IDE实现的功能,甚至我们可以复写掉一些函数用于到达不同的功能用来做IDE和Maya的不同调试功能。 ![]() ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:CGRnDStudio,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |